항해995 [항해 플러스 백엔드] 8주차 회고 (WIL) DB인덱스와 트랜잭션 분리에 대해 다루었던 지난 한 주도 어느 순간 끝이 났다. 1. 문제서비스가 제공하는 기능에 따라 트랜잭션의 범위는 다르다. 이번 과제는 서비스가 확대되어 서비스를 분리하게 될 경우 예상되는 문제를 어떻게 해결할지 설계하는 것이었다. 트랜잭션의 범위 때문에 서비스를 분리하면 트랜잭션의 문제가 발생하고 이를 해결하기 위해서는 '보상 트랜잭션'이 필요하다. 하지만 '보상 트랜잭션' 개념을 이번에 처음 듣게 되었다. 2. 시도잘 모르는 개념이기 때문에 단순 구글링을 통해 관련 정보를 찾아볼 수 밖에 없었다. 3. 해결보상 트랜잭션을 검색하면 연관해서 MSA 개념을 쉽게 찾을 수 있다. MSA(MicroService Architecture)에서 보장하는 보상 트랜잭션 방법을 참고해서 과제.. 2024. 11. 16. [항해 플러스 백엔드] 7주차 회고 (WIL) 7주는 지금까지 항해플러스를 진행하면서 가장 힘든 한 주였다. 과제가 생각보다 어렵기도 했지만 피로가 몸에 지속적으로 누적된 점도 한 몫했다 생각한다. 과제는 챕터2에서 구현한 서버를 캐싱과 레디스를 활용해 고도화하는 작업이었다. 캐싱처리와 레디스를 사용해본 경험이 없었기 때문에 사용법부터 익혀야만 했다. 1. 문제새로운 개념을 익히는 과정은 생각보다 큰 문제가 되지 않았다. 정작 내 발목을 크게 붙잡은 건 챕터2를 진행할 때 작성했던 내 코드들이었다. 과제 제출에 초점을 두어 기능을 동작하게 만들었지만 구조상 기능사이의 결합도가 크게 형성되었다. 2. 시도이번 과제 내용 중 하나는 DB로 구현된 대기열을 Redis로 옮기는 것이었다. 때문에 처음에는 큰 변경 없이 Redis로 옮기려고 했지만 기존 코.. 2024. 11. 9. [항해 플러스 백엔드] 6주차 회고 (WIL) 이번 한 주 동안 동시성 문제(Race Condition)을 해결하기 위한 방법들을 분석해보고 직접 구현해보았다.분석과정에서 추상적으로 이해했던 DB 락에 대한 이해도를 높힐 수 있었다. 덕분에 앞으로 DB락을 필요한 시점에 더 잘 활용할 수 있을 것이란 자신감이 생겼다. 1. 문제비관적락과 낙관적락의 경우 지속적으로 접해서 괜찮았으나 Redis와 Kafka는 처음 접했기 때문에 개념을 이해하기 어려웠다. 2. 시도Reds와 Kafka를 다루는 유튜브 영상과 블로그들을 살펴보았다. 3. 해결기술적 러닝커브때문에 Kafka에 대한 분석과 구현은 다음기회로 미루고 이번에는 DB락과 Redis 를 다루었다. 4. 알게된 것'분산 서버', 'NoSQL', 'in-memory' 등의 키워드 때문에 어렵게만 생각.. 2024. 11. 2. [항해 플러스 백엔드] 4주차 회고 (WIL) 지난 주차는 서버의 정상 동작을 위해 필요한 기능 구현이 메인이 되는 한 주였다. 3주차 때 작성한 설계를 따라 코드를 작성하였는데, 설계를 만족하는 경우도 존재하지만작성 중간중간 설계를 수정해야하는 일이 종종 발생하였다. 이 과정에서'아... 설계를 꼼꼼하게 작성하지 못했구나'란 생각을 하게 되었다. 설계의 잦은 수정과 함께 개발 시간 지연에 영향을 준 요인은 도메인 모델과 JPA의 완전한 분리였다. 무엇이 문제였을까?domain 레이어의 도메인 모델 객체에서 JPA에 의존하는 요소를 완전히 제거하고,JPA에서 사용하는 도메인 엔티티는 infra 레이어에 위치시켰다.모델의 형태가 단순할 때는 상관 없지만 연관관계를 가질 때는 객체를 전환하는 게 다소 불편했다. 무엇을 했나?null체크를 통해 nu.. 2024. 10. 21. [항해 플러스 백엔드] 3주차 회고 (WIL) 챕터2가 시작되었다. 챕터1에서 TDD와 클린아키텍처를 통해 어떻게 개발을 해야할 지 방법론에 대하여 배웠다면,챕터2에서는 챕터1에서 배운 내용들을 기반으로 실제 서버를 개발하는 방법을 다룬다. 이번 주는 앞으로 개발할 서버에 대한 시나리오를 선택하고시나리오에서 필요로하는 요구사항을 서비스하는 서버의 설계작업을 했다. 3주차에서 겪었던 문제...이번 주에 수행해야 했던 과제는 일반적으로 신규 개발에 들어갈 때 사전에 준비해야하는 작업들이었다. 1. 시나리오 선정2. 시나리오 요구사항 분석 (Milestone / 시퀀스 다이어그램 / 플로우 차트)3. 서비스 설계 (ERD 설계 / API 명세 / Mock API) 평소 회사에서 요구사항에 대해 깊은 고민없이 업무를 진행했었는데, 특히 시퀀스 다이어그램을.. 2024. 10. 13. 이전 1 다음