최근에 항해 DEV LAB이라는 개발자 행사에 참여할 기회가 생겨서 다녀왔다.
회사 동료분이 항해 출신이신데, 이런 행사가 있다고 알려주셔서 신청했고, 운좋게 200명 안에 선발되었다.
이런 행사에 참여한 적이 처음이라 경험한 것을 기록하기 위해 간단히 정리해보려 한다!
향로님 세션은 인프랩에서 주니어 개발자가 적응 기간을 최소화 하면서 활약할 수 있는 환경을 어떻게 조성할지와 업무 효율을 어떻게 극대화 시킬 수 있을지에 대한 고찰과 실행 과정을 중점으로 진행되었다.
사실 이 모든 것을 충족하는 사람을 찾기는 어렵다.
향로님은 이 체크리스트 중 1, 2번을 제외한 나머지는 훈련이 가능하다 판단하고 인재를 영입했다고 한다.
입사 시 개발팀의 미션을 공유
적응 시간을 줄이고 활약 시간을 늘리기
신입이 입사한지 1년 만에 이직을 하거나 그만둔다면? -> 회사에서 투자한 비용 대비 효율 떨어짐
이런 부분을 개선하기 위해서 적응 시간을 최소화하고 활약할 수 있는 시간을 최대화하는 방법을 고안
=> AI를 활용하면 어떨까?
AI 코드리뷰 (CodeRabbit.ai)
정적 분석 (SonarQube)
SW 개발 생산성 측정 (DORA Metrics)
AI Slack Bot
통합 검색 (MetaSearch)
인프랩에서는 한번의 문서화가 팀원 전체의 생산성을 개선한다는 것을 팀원 모두가 인지하고 있어서 문서화는 당연히 해야하는 문화가 되었다. 구두로 논의된 내용들도 슬랙에 작성하여 휴가 등으로 부재가 있었던 팀원들도 AI Bot을 이용해 데일리 리포트를 받아볼 수 있게 했다고 한다.
테오님 세션은 프론트엔드에서의 관심사 분리와 여러 아키텍쳐를 중심으로 진행되었다.
프론트엔드는 언어를 3개를 배운다.
HTML(구조), CSS(표현), JavaScript(동작)은 관심사 분리의 좋은 예시인데,
각각의 고유한 역할을 담당하면서 개발의 복잡성을 관리할 수 있게 되었다.
컴포넌트 희망편 vs 컴포넌트 절망편...
프론트엔드의 관심사 분리 기준
등등... 위와 같이 역할을 중심으로 관심사 분리를 해왔는데, 이제는 UI 요소와 로직을 하나의 단위(컴포넌트)로 개발하다보니 기능 중심의 모듈화가 되었다. 그런데 이것도 문제점이 있었으니..
이러한 문제들을 해결하기 위해 아래와 같은 방안이 있다.
구조
1. UI Layer
2. Application Layer
3. Domain Layer (핵심 비즈니스 로직)
4. Infrastructure Layer
구조
1. app (app 전역 설정)
2. shared (재사용할 공통 컴포넌트)
3. entities (user, order 등의 도메인 관련)
4. features (auth, cart 등의 기능 관련)
5. pages (라우트와 연관된 페이지 컴포넌트)
- 단일 책임 원칙
- 의존성과 단방향 데이터 흐름
- 응집도는 높게, 결합도는 낮게
- 모듈과 레이어
- 데이터 흐름과 아키텍쳐
이런 요소들과 프로젝트 볼륨을 생각하면서 효율적인 폴더 구조를 생각해야 한다!