전체 글
-
2022년 회고휴먼띵킹 2023. 1. 2. 02:13
사내 회고 외에 회고를 처음으로 작성해보는데, 1년 기록을 한번에 작성하려니 잘 기억이 나질 않는다. 올해 있었던 일로는 2022년의 두번째날 발목이 부러진 사건, 코로나 양성, 인프콘 참석, 개발독학(이라는 카카오톡 오픈채팅방이 있으니 많은 검색바랍니다..) 정모 등등 여러가지가 있지만, 가장 굵직한 일로는 퇴사와 입사인 것 같다. 트레바리 퇴사 2021년 9월 트레바리에서 개발자 커리어를 시작하여 2022년 2월까지 약 5개월이라는 짧은 시간을 있었다. 결과적으로는 야놀자에 입사하게 되서 이르게 트레바리를 퇴사한 것을 후회하지 않지만, 돌이켜 봤을 때 스스로 아쉬운 점들은 있다. 내 고민을 말한 적이 없었다. 예를들어 자바/백엔드 개발을 할거라는 예상과 다르게 입사 당시에는 노드-타입스크립트로 개발하..
-
Cloudwatch 의 로그를 이용해 매트릭 수집하기 (Filter)개발/Monitoring 2022. 10. 8. 02:20
개요 유저에게 문자등 메세지를 전송하기 위해 벤더사의 에이전트 프로그램을 사용하게 되는데, 이 에이전트의 단위시간당 처리 속도를 알고 싶은 니즈가 생겼다. 처리 속도를 측정하기 위해선 메트릭을 수집해야하지만, 특정 벤더사가 제공하는 프로그램이기 때문에 직접 코드를 수정하거나 할 수 없다. 그래서 메트릭 수집을 하는 코드를 심는 대신, 이 에이전트가 남기는 로그를 활용하여 매트릭을 수집하기로 하였다. Cloudwatch는 Filter를 통해 특정 로그를 매트릭으로 수집하는 기능을 제공한다. 이 Filter 사용 방법을 정리한다. 실습 연습용으로.. 어떤 요청이 종료된 개수를 수집하고 싶다고 가정한다. 요청이 종료되면 'Finished ~~~' 이런 로그를 남기는데, 해당 로그를 이용해 메트릭을 수집할 것이..
-
KafkaAvroSerializer/Deserializer 를 이용하는 테스트개발/Spring 2022. 6. 1. 23:44
아래 글을 참고해서 거의 동일한 내용이지만, 코드를 열어보면서 더 대충 정리한 글입니다. https://medium.com/@igorvlahek1/no-need-for-schema-registry-in-your-spring-kafka-tests-a5b81468a0e1 개요 Kafka 에 데이터를 전송할 때 바이트 배열로 변환해줄 Serializer 가 필요하다. Json, Avro, Thrift 등등이 있는데, 현재 Avro 를 사용하고 있다. 테스트를 작성해야하는데, 최대한 간단하고 멱등성있는 테스트를 작성하고 싶었다. 인메모리 기반의 EmbeddedKafka가 있기 때문에 테스트컨테이너는 사용하지 않으려고 했다 Schema-Registry 까지 굳이 테스트할 생각은 없었다. (카프카로 전송하는 과정만..
-
Schema-validation: missing table [name] 에러개발/JPA & Hibernate 2022. 3. 31. 03:43
결론부터 보기 현재 MySQL 5.7, MariaDB JDBC Driver 그리고 Spring Data JPA (Hibernate 5.67) 을 사용하고 있다. Spring Data JPA 를 사용하다보면 hibernate ddl-auto 라는 옵션을 사용할 수 있다. 옵션에는 validate, create, create-drop, update, none 등이 있다. 그리고 현재 validate 옵션을 사용 중이다. validate : 서버를 기동할 때 JPA Entity 클래스와 DB 스키마를 비교하여 [테이블, 컬럼, id generator] 가 유효한지 검사하는 옵션이다. 문제 현상 분명 테이블이 있는데, 테이블이 없다고 한다. validate 옵션을 설정해놓아서 서버를 기동하니 schema val..
-
F-Lab 멘토링 후기휴먼띵킹 2022. 3. 20. 18:53
F-Lab 홈페이지 종종 저에게 에프랩에 대해 물어보는 분들도 계시고, 지난 시간들을 되돌아볼겸 후기를 작성하게 되었습니다. 저는 2021년 4월에 F-Lab 멘토링을 받기 시작하여 10월에 수료하였습니다. 수료 직전인 2021년 9월에 스타트업으로 신입으로 첫 취업을 하였습니다. 4개월 뒤인 2022년 2월에 목표하던 유니콘 기업으로 이직하였습니다. 위 과정들을 간단하게 소개하게 될 것 같습니다. 멘토링을 신청한 계기 보통의 사람들 처럼 저도 컴퓨터공학과를 졸업하고 취업전선에 뛰어들었습니다. 하지만 멘토링 전에 저는 백엔드 개발자로 취업을 하려면 어느정도 역량을 가져야하는지 전혀 몰랐습니다. 단순하게 이런 생각을 했었습니다. “자바 기본기도 갖춰진 것 같고, 객체지향에 대해서도 좀 알거같고, 이정도면 ..
-
스프링 배치 Processor의 Filtering개발/Spring 2021. 12. 27. 02:31
스프링 배치의 필터링 최근 아래와 같은 물음을 받은 적이 있다. 스프링 배치에서 만약 10000건을 읽어왔을 때, 업데이트 대상은 100건 정도임에도 불구하고 10000건의 업데이트를 치게되냐? 내 대답 : 100건에 대한 업데이트만 발생한다. 왜냐하면 스프링배치의 Processor가 null을 리턴하면 해당 item은 writer 로 가지 않는다. 라고 말했었다. 사실 내 눈으로 확인한 적이 없었다. 그래서 말하고도 약간 자신이 없었다. 분명히 그렇게 알고는 있는데.. 코드로 확인한 적이 없어 찜찜했다. 다음부턴 확실하게 알고 얘기할 수 있도록 한번 내부동작을 간단히 살펴보았다. 시작! step이 시작되면 아래와 같이 진행된다. ChunkOrientedTasklet chunkProcessor.proce..
-
(성능테스트) Hikari pool connection 데드락 해결프로젝트/BLUE DELIVERY 2021. 8. 23. 18:22
안녕하세요. 최근 진행중인 프로젝트에서 최근 주문 API를 구현하고, JMeter를 이용해 부하 테스트를 진행한 적이 있습니다. 적은 트래픽에서는 문제가 없었는데, 부하를 일으키니 Hikari pool connection timeout 발생으로 요청을 처리하지 못하는 문제를 겪은 적이 있습니다. 이번 글에서는 이 문제를 발견하고 원인을 찾은 후 해결하는 과정까지를 정리해보려고 합니다. 문제점 주문 API를 구현하고 간단하게 테스트 해보았을 때는 아무 문제가 없었습니다. 그러나 JMeter를 이용해 부하테스트를 진행하면 대부분의 요청이 실패하는 문제가 생겼습니다. 임시 조치 콘솔창에 찍힌 에러 로그를 확인하니, HikariPool 에서 connection을 얻을 수 없다고 합니다. hikari pool 의..
-
스프링 이벤트 에러에 독립적으로 만들기 (트랜잭션 분리. @TransactionalEventListener, @Transactional)프로젝트/BLUE DELIVERY 2021. 8. 22. 17:43
안녕하세요. 제가 프로젝트에서 '주문 후 가게에 알림'을 구현하는 과정에서 고민했던 내용을 정리해보려는데, 내용이 길어질거같아 나눠서 올리려고 합니다. 주로 하게된 고민은 다음과 같습니다. 주문이 발생하야 알림이 발생할 수 있는데, 하나의 요청안에서 '주문'과 '알림'을 어떻게 독립적으로 처리할 수 있을지에 대한 고민 어떻게하면 에러가 발생해도 이벤트 메세지를 유실시키지 않고 한번 이상 유저에게 전달하는 것을 보장할 수 있을지 이번 글에서는 알림 서비스 개요와 @TransactionalEventListener, @Transactional 을 사용한 트랜잭션 분리에 관련된 내용을 해보겠습니다. 알림 서비스의 특징 알림 서비스를 구현하기 앞서서 알림 서비스에 필요한 내용을 정리해보겠습니다. 구현 목표 알림을..