항해 플러스 백엔드 6기 코틀린 언어로 진행중인 이철진입니다.현재 3주차가 진행중인 가운데, TDD & Clean Architecture 챕터에 대한 회고를 해보려고 합니다. 2주차 동안 과제를 진행하는 데 몰두한 나머지, 시간이 정말 빠르게 지나갔고 나름 TDD와 클린 아키텍처에 대한 다양한 질의질문 과정을 거치면서 많이 알게 되었습니다. 처음에는 내가 작성한 코드에 자신감이 없었기 때문에, 이번 챕터에서 과연 하나라도 통과할 수 있을까? 라는 생각이 많았는데, 팀원분들과 코치님들의 멘토링 시간들 덕분에 그동안 가장 중요하게 생각했었던 챕터의 과제 수행도 모두 완료하게 되었습니다. 남은 8주간의 과정에서도 열심히 진행하여 모든 배지를 받을 수 있도록 노력해보려고 합니다.. ㅎㅎ 추가적으로, 항해에 참여..
항해플러스
항해 2주차 과제를 완료하고, 지난주 나의 모습이 어떠했나를 다시 한 번 회고하는 시간을 가졌습니다. 이번주 과제 간의 문제 상황아키텍처를 잘 설계하고, DB 동시성을 제어하기 위한 과제를 진행했습니다.과제 진행 간에 좋은 구조를 만들기 위해서 계속 구조를 갈아엎는 상황이 발생하여 많은 난항을 겪었네요.. 문제 해결에 대한 시도레이어드 아키텍처 기반에 컨트롤러와 도메인 계층 중간에 퍼사드 계층을 두는 방식으로 아키텍처를 설계하려고 했습니다.또한, 각 계층간에 의존성을 덜어내기 위해 DTO를 따로 두기 위해 어떻게 구현해야할까를 많이 고민했습니다.아직도 이게 정확히 좋은 구조다! 라고 말하기는 어렵고 다른 분들의 아키텍처를 보면서 이렇게도 작성할 수 있구나 라는걸 생각하게 되긴 한데 일주일 동안 최선을 ..
과제, 프로젝트를 진행하면서 부딪혔던 기술적인 문제동시성처음 동시성 문제를 단순하게 한 명의 사용자가 접근하는 방식이라 생각하여, Synchronized와 Blocking Queue를 생각했다.TDD테스트를 얼마나 작성해야할지 감이 잘 안와서 고민이 많았다. 문제를 해결하기 위해 어떤 시도를 하셨나요?동시성Q&A를 통해 동시에 여러 사용자가 접근할 수 있다는 것을 깨닳았다.이에 따라, 사용자 ID를 기반으로 인메모리 Lock을 관리하는 클래스를 만들어주었다.TDD서비스 로직에 대한 실패 위주 테스트를 진행했다.Interface를 적극적으로 활용하여 Stub 객체를 활용할 수 있도록 구현했다.OOP테스트를 진행하면서, 테스트하기 불편한 구조를 나누는 연습을 통해 객체간의 의존성을 덜어내는 시도를 했다. 문..