EVO

왜 롤백이 되었을까

문제 상황 로컬 환경에서 할일 알림이 DB에 저장되지 않는 문제가 발생했습니다. 신기하게도 DEV, PROD 환경에서는 정상적으로 동작하고 있었고, 최신 DB 스냅샷과 dev 브랜치로 업데이트해도 문제가 지속되었습니다. 디버깅 과정 먼저 디버거를 통해 데이터 흐름을 확인했습니다. 디버깅 결과 데이터가 정상적으로 저장되는 것을 확인할 수 있...

장애에 대해 대처하는 방법

들어가며 서비스를 운영하면서 크고 작은 장애들을 경험했다. 처음엔 당황스러웠지만, 이제는 어느 정도 패턴이 보이기 시작했다. 특히 “코드를 어느 계층에서 수정해야 할까?”라는 고민이 가장 어려웠는데, 나름의 판단 기준을 정리해보고자 한다. 주요 장애 유형 지금까지 경험한 장애 유형들이다. 비즈니스 로직 오류 (70%) - VOC, QA...

에프랩(F-Lab) Java Backend 수료 후기

6개월간의 취준 끝. 2024년 8월 초부터 12월까지 flab 멘토링을 들은 후, 4월까지 취준을 마치고 원하는 조건들을 갖춘 서비스회사에 인턴을 시작했다. flab이 개발 방향을 잡는데에 가장 큰 역할을 했기에, 오랜만에 회고를 해보려한다. 멘토링을 시작하게 된 계기 나는 예전부터 멘토링 방식의 학습을 선호해왔다. 학교 멘토링 프로그램이나 개...

DB 설계 개선으로 끌어올린 코드 품질과 유지보수성

리팩토링을 시작하게 된 배경 오래된 제 코드를 살펴보면서 리팩토링의 필요성을 느꼈습니다. 리팩토링을 하려는 이유는 숨겨진 버그나 취약점을 발견하고 수정하기 위함과 가독성을 높여 확장성을 향상시키기 위함 입니다. 리팩토링을 시작하려 했지만, 오래된 코드의 내용이 기억나지 않아서 먼저 코드를 보면서 어떤 요구사항이고 도메인이었는지 떠올려야 했습니다. ...

멤버 초대 이메일 발송 설계

기능 요구사항 관리자는 이메일 주소를 입력하여 새로운 멤버를 초대할 수 있습니다. 초대 이메일은 지정된 템플릿 형식으로 발송되어야 합니다. 초대 링크는 10분간 유효합니다. 초대 링크는 1회만 사용가능합니다. 만료되거나 사용된 초대 링크는 더 이상 사용할 수 없습니다. 비기능 요구사항 초대 링크는 추측할 수 없는 안전한...

커넥션 풀 고갈 문제를 Redis Atomic 연산으로 개선하기

장애 상황 이슈 생성 API의 부하 테스트를 통해 안정적인 서비스 제공과 우수한 성능을 달성하는 것을 목표로 설정했습니다. 그러기 위해서 대규모 조직(1000명 이상)에서 50~100명의 사용자가 동시에 이슈를 생성하는 상황을 가정했을 때, 다음과 같이 요청-응답 시간(MTT)은 1~2초 이내, TPS는 30~40, 에러율은 0.1% 이하, 테스트...