[원티드 프리온보딩] 백엔드 챌린지 3월

Jun·2023년 3월 8일
0
post-thumbnail

📌 프리온보딩 백엔드 챌린지 3월 링크

😊 신청

평소와 같이 하염없이 구직 플랫폼들을 탐색하며 우연히 마주한 원티드 프리온보딩 챌린지 3월 배너...

백엔드라는 단어에 홀린 듯 이벤트 페이지를 방문하게 되었다.

이번 3월의 주제는 SW 아키텍처였다. 이번에 처음 알게 되었지만 3월에 진행되는 것을 보아하니 2월에도 진행이 되었을 거 같고 아마 4월에도 진행이 되지 않을까 싶다.

평소에 SW 아키텍처라고는 하나도 알지 못한 상태였지만 애플리케이션을 개발하다 보면 아키텍처가 빠질 수가 없다는 것을 알고 있었기에 어떤 자그마한 지식이라도 습득하고 아키텍처에 대한 시야를 넓히면 좋겠다는 생각으로 신청하게 되었다.

😊 OT ( 23. 03 .06 )

OT는 zoom을 이용하여 진행되었고 큰 내용은 없었다. 이번 챌린지에 대한 간단한 설명과 진행 방식에 대해 간단히 설명해주시고 Q&A 시간을 가진 후 마무리 되었다.

😊 Day 1 ( 23. 03. 08 )

첫 날은 비교적 간단한 내용으로 진행 되었다. Domain과 SW 아키텍처에 대한 배경지식(?)에 대한 이야기를 해주셨다.
예를 들면 왜 Domain이 중요한지, 좋은 SW 아키텍처 구조를 왜 적용해야 하는 지에 대한 이야기 정도이다.

개인 프로젝트를 진행할 때 조차도 이게 어떤 아키텍처 인지 내가 프로젝트에 기계처럼 하던 행동이 아키텍처를 잡는 행동이라는 것도 이제서야 알게 되었다. 😭

그래도 내가 알고 있던 Domain의 의미가 아예 다른 의미는 아니었다.
나는 Domain을 산업 분야 정도라고 생각하고 있었다.

예를 들면 제조, 이커머스, 핀테크 와 같은 것들이다.

그리고 zoom을 통해 많은 인원과 함께 진행하다 보니 다른 사람들이 하는 질문들 속에서도 내가 부족한 부분을 느낄 수 있었다. DDD는 무엇이며 바운디드 컨텍스트 ? 이름조차 헷갈리는 단어도 처음 접하였다. 많은 인원이 함께 수강하고 질문하는 것에 대한 장점이라고 생각한다. 내가 의문점을 가지지 못한 부분에서도 다른 인원이 질문하여 지식을 얻을 수도 있고, DDD와 바운디드 컨텍스트처럼 처음 접하는 단어들을 보며 내 부족한 지식을 파악하는 기회가 되기도 하기 때문이다.

강의를 진행하면서 중간중간 쉬는 시간에도 멘토님께서 질문도 답해주시고 학습 방향도 잡아주시고 마지막에 아하!모먼트 시간에는 취준, 이직, 면접 등등 꿀팁 들도 많이 알려주셨다.

위트 있으시고 너무 친절하신 분이었다. 신청하길 잘 했다는 생각이 들었다.

🔭 Day 1) 풀어야 할 의문점들

  • DDD는 무엇인가 ?
    → Domain Driven Design의 약자로 도메인 주도 설계의 줄임말이다.
  • 바운디드 컨텍스트가 무엇인가 ?
    → 같은 Domain이 서로 다른 뜻을 가지고 있을 때 구분하기 위한 것
  • MVC 패턴은 Layered Architecture와 연관이 있을까 ?
    → 연관이 있다. MVC패턴에서의 View, Controller 는 Layered Architecture의 Web Layer에 위치하게 된다.
  • 패턴과 아키텍처는 무엇이 다를까 ?
  • DDD와 TDD를 동시에 할 수 있을까 ?
    → 결론만 먼저 말하면 동시에 가능 하다. DDD는 설계 방식이고, TDD는 개발 방식이기 때문이다.

😊 Day 2 ( 23. 03. 11 )

Architecture 중에서도 가장 기본이 되는 Layered Architecture와 Test에 대한 수업이 진행되었다.

이전 직장에서 경험해서 줄곧 사용하고 있던 Controller-Service-Repository가 Layered Architecture 였다. 알려주는 사람도 없었고 그냥 그런 가 보다 하고 넘어갔던 것도 있었지만 그런 것도 모르고 사용하고 있었으니 부끄러운 순간이 아닐 수가 없었다 ...😭 어차피 나는 쌩초보니까 이제부터 알면 되지 라며 위로하고 넘어가보도록 하자.

Layered Architecture의 장,단점과 어떻게 개선해야 하는 지에 대한 것들이 주된 강의 내용이었다. Domain과 Entity에 대한 언급이 자주 되었는 데 사실 뭐가 다른 지 아직도 잘 모르겠다.

Layered Architecture 강의를 진행하며 Test에 대한 부분도 간단하게 짚고 넘어가 주셨다. 사실 닥치는 대로 찍어내는 식의 개발만 하다가 TDD 적용하려고 시도했었지만 어떻게 해야 하는 지 알지도 못하는 상황이었는데 약간 물꼬를 튼 것 같았다.

그리고 Test 강의을 수강하면서 Fake, Stub, Mock 이라는 것도 처음 접하게 되었다.

아직 모르는 게 많구나.. 더 깊은 심해로 들어가 보자 화이팅 !

🔭 Day 2) 풀어야 할 의문점들

  • Layered Architecture로 개발을 진행할 때 DB부터 설계하고 Repository를 구현하지 않으면 어떻게 될까 ?
  • Layer 간의 경계를 확실하게 하고 의존관계를 끊기 위해서 DTO를 추가하게 되면 무조건 레이어 마다 DTO가 있는 것이 좋은가 ?
  • 원칙인 SOLID를 무조건 모두 적용하나 ?
  • Test Module ? ( Fake, Stub, Mock ) 들 간의 차이점은 무엇이며 실제 코드에는 어떻게 적용될까 ?

😊 Day 3 ( 23. 03. 15 )

이번 시간에는 지난 강의 약간의 복습과 Layered Architecture를 다른 Architecture로 변경하는 라이브 코딩이 진행되었다. 지난 시간에 이어서 Layered Architecture를 조금 더 수정하고 domain 이라는 package가 생기게 되었다. Clean Architecture와 Hexagonal Architecture로 변경하는 것이 진행되었는데 Clean Architecture는 어째저째 머리로 따라갈만 하였지만 Hexagonal Architecture는... (절레절레) Adapter와 Port가 필요하고 In, Out이 있다는 것만 알아두고 넘어가자...

그 외에도 Vertical Slice Architecture나 Component-based Architecture가 있지만 이것은 나중에 ...

강의가 점차 진행될 수록 모르는 게 너무 많이 나온다. 헉...

🔭 Day 3) 풀어야 할 의문점들

  • Service와 Repository간의 의존관계는 어떻게 해결해야 할 까 ?
  • Clean Architecture의 단점은 ?
  • Use Case가 변경되어도 Controller와 Service는 왜 변경되면 안 될까 ?

😊 Day 4 ( 23. 03. 18 )

마지막 날은 크게 진행한 내용은 없다. Architecture 확장에 대한 이야기가 진행되었다.

약 4번의 강의를 수강하며 SW Architecture에 대해 접할 수 있는 기회가 되었다. 여러 Architecture와 개선 방법, 확장 방법에 대한 이야기도 들었으니 이제 내 프로젝트에 적용해보는 연습 밖에 남지 않았다. 이렇게 하나하나 적용하고 배워가면 좋은 개발자가 될 수 있지 않을까라는 생각으로 열심히 하자 !!

🔭 Day 4) 풀어야 할 의문점들

  • 직접 참조, 간접 참조란 무엇인가 ?
  • 모놀리식 vs 모듈리식
  • 마틴 파울러 뭐 했던 사람일까 ?
profile
I'll be a Back-End Developer

0개의 댓글