평소와 같이 하염없이 구직 플랫폼들을 탐색하며 우연히 마주한 원티드 프리온보딩 챌린지 3월 배너...
백엔드라는 단어에 홀린 듯 이벤트 페이지를 방문하게 되었다.
이번 3월의 주제는 SW 아키텍처였다. 이번에 처음 알게 되었지만 3월에 진행되는 것을 보아하니 2월에도 진행이 되었을 거 같고 아마 4월에도 진행이 되지 않을까 싶다.
평소에 SW 아키텍처라고는 하나도 알지 못한 상태였지만 애플리케이션을 개발하다 보면 아키텍처가 빠질 수가 없다는 것을 알고 있었기에 어떤 자그마한 지식이라도 습득하고 아키텍처에 대한 시야를 넓히면 좋겠다는 생각으로 신청하게 되었다.
OT는 zoom을 이용하여 진행되었고 큰 내용은 없었다. 이번 챌린지에 대한 간단한 설명과 진행 방식에 대해 간단히 설명해주시고 Q&A 시간을 가진 후 마무리 되었다.
첫 날은 비교적 간단한 내용으로 진행 되었다. Domain과 SW 아키텍처에 대한 배경지식(?)에 대한 이야기를 해주셨다.
예를 들면 왜 Domain이 중요한지, 좋은 SW 아키텍처 구조를 왜 적용해야 하는 지에 대한 이야기 정도이다.
개인 프로젝트를 진행할 때 조차도 이게 어떤 아키텍처 인지 내가 프로젝트에 기계처럼 하던 행동이 아키텍처를 잡는 행동이라는 것도 이제서야 알게 되었다. 😭
그래도 내가 알고 있던 Domain의 의미가 아예 다른 의미는 아니었다.
나는 Domain을 산업 분야 정도라고 생각하고 있었다.
예를 들면 제조, 이커머스, 핀테크 와 같은 것들이다.
그리고 zoom을 통해 많은 인원과 함께 진행하다 보니 다른 사람들이 하는 질문들 속에서도 내가 부족한 부분을 느낄 수 있었다. DDD는 무엇이며 바운디드 컨텍스트 ? 이름조차 헷갈리는 단어도 처음 접하였다. 많은 인원이 함께 수강하고 질문하는 것에 대한 장점이라고 생각한다. 내가 의문점을 가지지 못한 부분에서도 다른 인원이 질문하여 지식을 얻을 수도 있고, DDD와 바운디드 컨텍스트처럼 처음 접하는 단어들을 보며 내 부족한 지식을 파악하는 기회가 되기도 하기 때문이다.
강의를 진행하면서 중간중간 쉬는 시간에도 멘토님께서 질문도 답해주시고 학습 방향도 잡아주시고 마지막에 아하!모먼트 시간에는 취준, 이직, 면접 등등 꿀팁 들도 많이 알려주셨다.
위트 있으시고 너무 친절하신 분이었다. 신청하길 잘 했다는 생각이 들었다.
Architecture 중에서도 가장 기본이 되는 Layered Architecture와 Test에 대한 수업이 진행되었다.
이전 직장에서 경험해서 줄곧 사용하고 있던 Controller-Service-Repository가 Layered Architecture 였다. 알려주는 사람도 없었고 그냥 그런 가 보다 하고 넘어갔던 것도 있었지만 그런 것도 모르고 사용하고 있었으니 부끄러운 순간이 아닐 수가 없었다 ...😭 어차피 나는 쌩초보니까 이제부터 알면 되지 라며 위로하고 넘어가보도록 하자.
Layered Architecture의 장,단점과 어떻게 개선해야 하는 지에 대한 것들이 주된 강의 내용이었다. Domain과 Entity에 대한 언급이 자주 되었는 데 사실 뭐가 다른 지 아직도 잘 모르겠다.
Layered Architecture 강의를 진행하며 Test에 대한 부분도 간단하게 짚고 넘어가 주셨다. 사실 닥치는 대로 찍어내는 식의 개발만 하다가 TDD 적용하려고 시도했었지만 어떻게 해야 하는 지 알지도 못하는 상황이었는데 약간 물꼬를 튼 것 같았다.
그리고 Test 강의을 수강하면서 Fake, Stub, Mock 이라는 것도 처음 접하게 되었다.
아직 모르는 게 많구나.. 더 깊은 심해로 들어가 보자 화이팅 !
이번 시간에는 지난 강의 약간의 복습과 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가 있지만 이것은 나중에 ...
강의가 점차 진행될 수록 모르는 게 너무 많이 나온다. 헉...
마지막 날은 크게 진행한 내용은 없다. Architecture 확장에 대한 이야기가 진행되었다.
약 4번의 강의를 수강하며 SW Architecture에 대해 접할 수 있는 기회가 되었다. 여러 Architecture와 개선 방법, 확장 방법에 대한 이야기도 들었으니 이제 내 프로젝트에 적용해보는 연습 밖에 남지 않았다. 이렇게 하나하나 적용하고 배워가면 좋은 개발자가 될 수 있지 않을까라는 생각으로 열심히 하자 !!