레벨 2 - 지하철 회고

주노·2023년 6월 7일
0

우테코 5기 회고

목록 보기
8/12
post-thumbnail

서론

페어 애쉬와 함께 미션을 진행했다.

이번에는 TDD에 완전 집중해보자는 생각으로 설계, API명세, 요청 - 반환타입, DB 구조설계에 시간을 많이 쏟았다.

주어진 3일중 2일동안 설계 및 테스트만 작성하고 실제 코드는 마지막날에만 작성했다. 그럼에도 시간이 부족하지 않았는데 그만큼 주어진 시간에 깊이있는 집중을 했던 것 같다.

🙆‍♂️ 소프트스킬

💡 소프트스킬?
소프트 스킬이란 다른 사람과 함께 일하고 다른 사람들과 교류하는지를 설명하는 대인관계 기술로 충돌 해결, 비판적 사고, 공감, 조직, 리더십, 팀워크, 시간관리 등을 포함한다.

🧑‍🏫 애쉬 선생님

설계를 하면서 복잡한 도메인 규칙에 대해 많이 헤맸었는데 그때마다 애쉬가 종이와 펜을 들고 친절하게 설명해주는 시간이 많았다.

애쉬처럼 똑똑해져서 페어에게 알려주는 사람이 되고싶다 🔥🔥

💬 적극적인 토론

팡상 페어프로그래밍을 진행하면서 구현에 집중하느라 토론을 많이 진행하지 못했던 부분이 아쉬웠는데 이번 미션은 토론에 많은 비중을 둘 수 있어서 좋았다.

서로의 의견을 제시할때나 의견을 수용할 때 이유와 근거를 함께 제시하는 시간을 가졌는데 이 경험이 너무 좋았다.

한가지 아쉬운점은 이 토론내용을 따로 적어두지 못했다는 점이다..

분명 오가는 토론은 많았는데 막상 기록을 안하니까 아쉽다...

🔨 하드스킬

💡 하드스킬?
특별하게 훈련할 수 있는 기술로 각 분야별로 해당하는 요소가 다르다.
엔지니어링의 경우 프로그래밍언어(Java, Python 등), 클라우드 컴퓨팅, 서버 유지보수 등을 포함한다.

인수테스트

사용자의 요구사항에 맞춰 시나리오를 작성하고 이를 테스트하는 방식이다.
보통 통합테스트로 작성되며 특정 시나리오에 대해 예상한 대로 잘 동작하는지 알 수 있다.

Repository와 DAO

주노 Say

DB 테이블구조와 1대1로 매핑되는 객체를 Entity라고 정의했습니다.
그리고 유의미한 행동을 수행하고 협력할 수 있는 객체를 Domain이라고 정의했습니다
따라서 유의미한 행동을 할 수 있는 Domain이 비즈니스 로직을 담당하�게 된다고 생각했습니다.

계층의 관점으로 봤을 때 Service 계층은 비즈니스로직을 수행하는 부분이라고 정의했고, 결국 이 개념들이 조합되어 Service 계층에서는 Domain만 필요하다고 생각했습니다.

비즈니스 로직의 흐름 상 유의미한 정보를 가지지 못하는 (id만 가지고 있는) Entity는 Service 계층에서 사용할 필요가 없다고 생각했습니다.

Dao는 Entity를 이용해서 조회, 수정, 삭제, 생성이라는 행위를 하는데 정작 Service 계층에서 필요한건 Domain이라는 문제가 발생했습다.

하나의 Domain을 만들어주려면 여러 테이블의 정보를 조회해서 조합을 해야하는데 이 행위를 특정 Dao가 가지기에는 �Dao가 상호 의존하게 되는 문제가 발생했습니다.

DB 정보를 유의미한 도메인으로 조합해주는 계층이 있으면 어떨까? 라는 생각으로부터 Repository를 생각하게 되었고 Repository라는 구조를 사용하게 되었습니다.

해당 커밋

🧹 정리

도메인의 책임과 역할을 생각하면서 설계를 진행해봤다.

TDD도 잘 지켰다고 자부할 정도로 이번 미션의 만족도는 최상이였다.
애쉬 최고 👍

profile
안녕하세요 😆

0개의 댓글