본문 바로가기

전체 글

(84)
[Spring + Kafka] 대용량 스트림 메시지 구독 설계 수많은 스트림 데이터를 안정적으로 구독하기 위한 시스템 설계 방법은 정말 다양하다.이 글에서는 대용량 결제 데이터 스트림을 처리하기 위해 우리가 설계를 했는지 서술하겠당  Listener vs Consumer Kafka를 사용하기 위해 다음 라이브러리를 사용했다.https://mvnrepository.com/artifact/org.springframework.kafka/spring-kafka 해당 라이브러리는 @KafkaListener 라는 강력한 어노테이션을 지원해준다. 일반적으로 Spring 환경에서 Kafka 토픽을 구독하기 위해선 두 가지 방법을 떠올릴 수 있다. 1. @KafkaListener 사용2. 주기적인 스케쥴링을 통한 Consumer.poll 사용 @KafkaListener가 제공해주는..
[Spring Batch] Job Instance 추가시, 데드락 문제 해결 최근 배치 관련 작업을 위해 Spring Batch를 통해 개발하고 있는데 예상치 못한 오류를 맞이했다. com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction : PreparedStatementCallback; SQL [INSERT INTO BATCH_JOB_INSTANCE(JOB_INSTANCE_ID, JOB_NAME, JOB_KEY, VERSION) VALUES (?, ?, ?, ?) ]; Deadlock found when trying to get lock; try restarting transaction in class..
[MySQL] DB 재시작과 auto_increment의 관계성 우리 팀은 수 많은 데이터베이스 서비스중 MySQL을 사용한다. 현재 개발하고 있는 서비스에서 사용하고 있는 DB는 꽤 오래전에 구축되었는데, MySQL 5.7 버전을 사용한다. 개발하면서 MySQL 5.7 버전에서는 쓸 수 없는 기능들로 많이 고생했기 때문에 최근 8.0 버전으로 업그레이드를 진행했다. 개발대역에서 자체적으로 5.7에서 8버전으로의 업그레이드를 진행했었는데, 서비스 상의 큰 이슈도 없었고 업그레이드 하는 시간도 많은 시간을 요구하지 않았기에 QA 대역에서 그대로 진행했다. 그런데 문제가 생겼다. AUTO_INCREMENT 의 COUNTER AUTO_INCREMENT(이하 AI)는 테이블의 pk 컬럼에 적용했을 때 꽤 편리한 속성이다. 데이터베이스 엔진이 자체적으로 PK를 카운팅하며 in..
[Spring JPA] 한 트랜잭션 내부에서의 외부 API 콜과 엮인 영속성 문제 이 카테고리를 만든 이유 이 카테고리에서 첫 글인 만큼 카테고리의 이유는 여기에 한번만 적겠다. 회사에서 개발하면서 모르는 지식들을 지피티형이나 구글링을 통해 서칭하는데, 가끔 [어 이거 옛날에 한번 검색했던 기억이 나는데?]라는 생각과 함께 나의 수준에 탄식을 하는 일이 있었다. 그래서 올해부터는 머리를 탁 치고 깨달았던 개발 관련 지식을 이 카테고리에 정리할 계획이다. 회고 말고는 쓸 주제도 명확하게 정하기 힘들었는데 다행이다. 사실 올해 마지막 글이 될 수도 있음 한 트랜잭션 내부에서의 외부 API 콜 데이터 베이스를 이용해 데이터를 가공하고 서빙하는 서비스를 개발함에 있어서 트랜잭션 관리는 아주 중요한 영역이다. 성능 이슈는 그렇다 쳐도 데이터 정합성을 해치는 상황이 발생하면 안되기 때문이다. 회..
주니어 백엔드 개발자 2023년 회고 상반기 회고를 쓴지 얼마 안된 것 같은데, 정신없이 지내다보니 벌써 2023년이 지나버렸다. 지난 상반기 회고는 두서없이 생각나는 내용을 마구잡이로 써서 아쉬움이 좀 있었다. (그렇다고 고치지도 않음) 따라서 상반기를 포함해 종합적인 2023년 전체 회고글을 쓰려고 한다. 1. 넥슨에서의 플랫폼 개발자 지난 1년간 B2C/B2B 서비스 프로젝트에 참여했다. 입사해서 가장 처음으로 개발에 참여했던 서비스인 피파온라인 개인화 서비스 유어필드를 시작으로 현재는 넥슨 크리에이터즈 개발에 참여하고 있다. 회사에서 운영중인 실제 게임 트래픽에 비해선 현저히 작은 트래픽을 운영하긴 하지만, 여러 게임 유저들의 피드백을 수용하고 대 유저 서비스를 개발하는 점이 좋다. 흔히 말하는 네카라쿠배당토 같은 서비스 기업에서는 ..
넥슨 주니어 개발자의 2023 상반기 회고 https://seongmok.com/84 2022 하반기 IT 개발자 취업준비 회고 현재 나는 4학년 2학기로 학교에 재학중이다. 4학년 진학당시, 마땅히 취업준비를 위해 해놓은 것도 없었고 딱히 하고싶은 것도 없어 진로에 대해 많이 고민을 했었다. 교내에서 크고작은 프로젝 seongmok.com 이 글을 쓰고 난 이후, 정신없이 시간이 지났다. 그동안 생각보다 많은 조회수를 기록했고, 많은 분들에게 도움이 된 것 같아서 기분이 좋았담. 결과적으로, 나는 넥슨에 입사했고 현재는 7개월차 주니어 백엔드 개발자로 직장생활을 하고 있다. 원래는 취업하고 나서 코딩테스트 관련 글도 좀 써서 취준생분들에게 도움이 될만한 글을 작성하고 싶었고, Spring을 깊게 파서 deep한 주제를 다루는 글들도 쓰고 싶었는..
코딩테스트를 준비하는 효율적인 방법 IT관련 대기업, 금융권 및 유니콘 기업에 취업하기 위한 코딩테스트 준비는 선택이 아닌 필수가 되었다. 대부분의 기업의 채용 프로세스는 서류 - 코딩테스트 - 면접 순으로 이루어지기 때문에 코딩테스트에 통과하지 못한다면 면접을 볼 수 있는 기회조차 없는 것이 일반적이다. 이 글에서 코딩테스트 준비를 시작하는 학생들에게 가늘고 길게 공부할 수 있는 방법을 제시할 것이다. 그리고 이 방법은 내가 작년부터 코딩테스트를 위해 경험한 내용을 기반으로 한다. 나름 긴 시간동안 꾸준히 문제해결과 알고리즘 공부를 해왔고, 채용 단계에서 PS유형의 코딩테스트에서는 한 곳 빼고 모두 합격했었다. 글을 읽는 사람들에게 나름의 신뢰도를 제시해야 하기에 부끄럽지만 나의 백준 프로필을 근거로 올린다. https://www.acm..
2022 하반기 IT 개발자 취업준비 회고 현재 나는 4학년 2학기로 학교에 재학중이다. 4학년 진학당시, 마땅히 취업준비를 위해 해놓은 것도 없었고 딱히 하고싶은 것도 없어 진로에 대해 많이 고민을 했었다. 교내에서 크고작은 프로젝트들을 진행했지만 딱히 전문성을 갖춘 프로젝트는 없었고, 네트워크 연구실에 소속되어 Low-level에서의 프로그래밍 프로젝트도 진행해보았지만 이쪽으로 진로를 선택하고 싶지도 않았다. 그저 PS하는 것이 재밌었기에 막연한 코딩테스트 대비만을 꾸준히 해왔던 것 같다. 그렇게 4학년을 맞이했다. 터닝포인트, 소프트웨어 마에스트로 나의 학부시절에 있어 가장 큰 터닝포인트는 소마 활동이다. 사실 부트캠프성 활동에 대한 막연한 기대는 가지고 있었지만, 앞서 말했듯이 딱히 하고싶은 것이 없었던 나에게 어느쪽 분야의 부트캠프를 지..