Hello, I’m Gyumyung Lee👋

Backend Programmer, Spring Boot, Java, Kotlin. and I consider it important to record. Such as TIL and Blog.

Latest Posts

카프카를 연동한 이유, 그건 일관성을 보장하고 싶었기 때문이야

개요 카프카의 서버 구축부터 Spring Boot 와 카프카를 연동해보고, 더 나아가 카프카 메시지 발행의 결과적 일관성을 보장하는 방법까지 다뤄본다. (본 포스팅에서 다루는 프로젝트는 다음 이커머스 프로젝트입니다.) 카프카 톺아보기 카프카? 카프카 (Kafka)는 링크드인에서 처음 개발된 오픈소스로, 그 당시 링크드...

항해 플러스 6기 8주차를 회고하며 - 나와 인덱스와 분산 트랜잭션

1. 문제 이번 8주차의 과제는 다음과 같다. * 시나리오에서 수행하는 조회 쿼리를 수집하고 인덱스를 적용하여 성능을 개선할 쿼리가 있다면 적용하여 성능 비교 분석하기 * 시나리오에서의 트랜잭션 범위를 분석해보고, 서비스가 확장된다고 가정할 때 현재 구조의 한계와 해결 방안을 분석해보기 * 부가 기능을 현재 비즈니스 로직...

전생했더니 인덱스였던 건에 대하여

인덱스 톺아보기 인덱스란? 인덱스란 테이블의 검색 속도를 향상시키기 위해 사용하는 자료구조로, 데이터와 데이터의 위치를 포함한 자료구조이다. 인덱스를 활용하면 데이터를 조회하는 SELECT 쿼리 동작 외에도 UPDATE나 DELETE 성능도 함께 향상된다. 데이터를 수정, 삭제하기 위해서는 해당 대상을 조회해야 하기 때...

항해 플러스 6기 7주차를 회고하며 - 그는 매번 느렸다. 캐시를 몰랐기 때문에

1. 문제 이번 7주차의 과제는 다음과 같다. * 캐싱을 적용하여 성능을 개선할 수 있는 로직을 분석하고, 이를 합리적인 이유와 함께 문서 정리하기 * 적절한 캐싱 전략을 적용한 비즈니스 로직 작성하기 이번 주차에서는 드디어 캐싱에 대해 다루게 되었다. 사실 지금까지 실무에서 캐싱에 대해 다뤄본 적이 없었기 때문에 어...

항해 플러스 6기 6주차를 회고하며 - 카프카 파티션 키 하나로 세상의 운명을 바꿔버린 이야기

1. 문제 6주차의 과제는 다음과 같다. * 시나리오에서 발생할 수 있는 동시성 이슈 파악 후 가능한 동시성 제어 방식들을 도입 및 장단점 파악 * 파악한 내용을 보고서로 작성해보기 * 이전 주차 때 적용한 동시성 제어 방식에서, 파악 후 적합하다고 판단한 방법으로 비즈니스 로직 개선해보기 지난 4주차 때 시나...

항해 플러스 6기 솔직 중간회고

🧑‍💻 회고 시작에 앞서 자기소개 회고를 작성하는 일자를 기준으로 3년 6개월 된 백엔드 개발자이다. 메인으로 삼고 있는 기술 스택은 Java, Kotlin, Spring Boot 이며, 3년 9개월이라는 시간 동안 HR 도메인에서 나름 다양한 서비스를 개발 및 유지보수 해오며 지내왔다. 취업 준비생 지원 서비스, 대학 ...

항해 플러스 6기 5주차를 회고하며 - Filter, Interceptor 넌 못지나간다 ✋

1. 문제 5주차의 과제는 다음과 같다. * 비즈니스 별 발생할 수 있는 에러 코드 정의 및 관리 체계 구축 * 시스템 성격에 적합하게 Filter, Interceptor 를 활용하여 기능의 관점을 분리하여 개선 * 시나리오 별 동시성 통합 테스트 작성 이번 시나리오를 구현하면서 발생할 수 있는 에러는 커스텀 예외를 ...

항해 플러스 6기 4주차를 회고하며 - 주문, 결제 동시성을 바로잡으면 그녀가 웃어줄 줄 알았다

1. 문제 4주차의 과제는 다음과 같다. * 선택한 시나리오 별 비즈니스 로직 개발 및 단위 테스트 작성 * 비즈니스 유즈케이스 개발 및 통합 테스트 작성 * 여기서의 유즈케이스는 시스템의 동작을 사용자 입장에서 표현한 시나리오로, 시스템에 관련된 요구사항을 알아내는 과정을 의미한다. 다시 한 번 우리 팀이 선택한...

인터페이스가 Even하게 익지 않았어요 (ServiceImpl 구조에 대한 사견)

사견) Service를 추상화하는 것은 좋은 구조는 아니라고 생각한다. 1. 추상화를 하는 이유가 모호하다. 우리가 추상화를 사용하는 이유는 이를 의존하는 대상을 보호하기 위해 한다고 생각한다. 이 관점에서 볼 때 Service 인터페이스를 의존하는 Controller를 보호하는 느낌이 든다. 하지만 “Controller가 ...

항해 플러스 6기 3주차를 회고하며 - 요구사항 분석이 안됐잖아! 하지만 빨랐죠?

1. 문제 3주차의 과제는 다음과 같다. * 아래 시나리오 중 한 가지를 선택한다. 1. E-커머스 서비스 2. 맛집 검색 서비스 3. 콘서트 예약 서비스 * 선택한 시나리오의 요구사항을 분석하여 분석 자료를 작성한다. > 시퀀스 다이어그램, 플로우 차트 등 * ERD 설계하여 자료를 작...