극과 극을 잇다, 세대 갈등 해소를 위한 즐거운 봉사활동 커뮤니티 POLAR
| 정승민 | 조승연 | 노석준 | 손우헌 |
![]() |
![]() |
|---|---|
| 자원봉사율 추이 | 세대갈등에 대한 전망 통계 |
- 2009년, 19.6%로 최고점을 찍었던 자원봉사율은 2023년, 10.6% 수준으로 감소, 현재 추이가 유지될 전망. (source: 지표누리)
- 2024년, '세대 갈등은 향후 더 심각해질 것이다' 48% 응답. (source: 한국리서치 여론 속의 여론)
자원봉사율은 줄어들고, 세대갈등은 늘어날 전망
봉사활동 참여를 늘리고 세대갈등을 줄일 수는 없을까?
이러한 물음 속에서 POLAR는 기획되었습니다.
- 프로필 수정
계층형 클린 아키텍처를 적용하여 관심사를 분리하고, 각 계층별 의존성을 최소화하였습니다.
이를 통해 개발 및 리팩토링 과정에서 문제가 발생한 계층을 명확하고 빠르게 판별하고 접근할 수 있었습니다.
backend/
├── auths/
├── chats/
├── common/
├── helps/ <!--모든 시스템 디렉토리가 아래와 같은 구조를 갖습니다.-->
│ ├── applications/
│ ├── domains/
│ ├── infrastructures/
│ └── HelpModel.ts
├── images/
├── juniors/
├── reviews/
├── seniors/
└── users/
각 디렉토리는 폴라라는 서비스를 제공하기 위한 시스템 단위로 분류하였습니다. (e.g. 인증/인가 시스템, 이미지 업로드 시스템 등)
각 ```시스템``` 디렉토리 하위에는 클린 아키텍처를 구현하기 위한 applications, domains, infrastructures 계층 디렉토리로 구성되었습니다.
applications
applications/
├── dtos/
└── usecases/
applications 디렉토리는 클린 아키텍처의 application 계층을 구현합니다.
API 요청에서 클라이언트와 서버가 주고 받을 DTO
시스템을 구성하고 있는 usecase를 구현합니다.
domains
domains/
├── entities/
└── repositories/
domains 디렉토리는 클린 아키텍처 동심원의 가장 안쪽인 domain 계층을 구현합니다.
DB의 스키마와 완전히 동일한 구조를 정의한 파일들을 모아둔 entities
DB의 데이터를 갖고오기 위한 메서드들을 Repositories에 interface로 추상화합니다.
infrastructures
infrastructures/
├── mappers(optional)/
└── repositories/
infrastructures 디렉토리는 클린 아키텍처 동심원의 가장 바깥인 infrastructure 계층을 구현합니다.
DB와 js의 속성명 (lowerCamelCase or Snake_case) 을 매칭하기 위한 mappers
domains에서 추상화하여 정의된 repository를 각 DB에 적합하도록, 실제 데이터를 갖고오는 로직이 repositories에 구현됩니다.
클린 아키텍처를 성공적으로 적용 : 강사님께 POLAR의 BE 디렉토리 구조는 교보재로 참고해도 좋을 정도라는 평가를 받음.
Next.js 풀스택 활용 경험 : 그동안 FE 개발 프레임워크로만 사용하던 Next.js를 처음으로 풀스택 프레임워크로 사용하는 경험
명확한 이유를 갖는 기술 사용 연습 : 팀원들 간 꼼꼼한 코드리뷰

