프로젝트 개요 프로젝트 주제 및 선정 배경 (기획 의도) ✅프로젝트 개요 (프로젝트 구현 및 컨셉, 훈련 내용과의 관련성) - 극락활용 장비 및 재료 ( 개발 환경 등 ) - 훈멋프론트엔드백엔드SpringDatabaseJavaBuildServerDocsInfra프로젝트 구조 - 데비형백엔드프론트엔드기대 효과 - 빙글뱅글프로젝트 팀 구성 및 역할 [⭐️개인 작성 필수 ] (노션)프로젝트 수행 절차 및 방법 [ 초이가 적습니다.]프로젝트 수행 결과 [ 프/백 ] 따로 작성하기자체 평가 의견 [⭐️ 개인 작성 필수 ] (노션)
프로젝트 개요
프로젝트 주제 및 선정 배경 (기획 의도) ✅

프로젝트 개요 (프로젝트 구현 및 컨셉, 훈련 내용과의 관련성) - 극락
활용 장비 및 재료 ( 개발 환경 등 ) - 훈멋
프론트엔드
- React (CRA)
- 상태관리: Redux-toolkit + Thunk
- 스타일: Emotion
- UI 테스트: Storybook
- 인증 : OAuth2.0
- 인프라

백엔드
Spring
- SpringBoot 2.5.X
- Spring-data-jpa
- Facade Layer
- Spring-Security - jwt - OAuth2.0 - OAuth
Database
- Mysql 5.7 lts (server)
- Mysql 8 (local)
Java
- Java 11.X (lts)
Build
- Gradle (lts)
Server
- Nginx
Docs
- Swagger2.X
Infra

프로젝트 구조 - 데비형
백엔드
- Infra 구조
- 구성
- Github actions (java with gradle)
- AWS S3
- AWS RDS
- AWS EC2 (Ubuntu 20.04 LTS)
- AWS Code Deploy
- Docker & Docker Hub
- NGINX
- AWS Certificate Manager
- AWS Route 53
- AWS Elastic Load Balancer (Application Load Balancer L7)
- CICD 과정
develop
또는main
branch로 merge되었을때 github action에 적용된 build 과정을 수행합니다.- build한 결과를 docker image 로 빌드하고, docker hub로 이미지를 push 합니다.
- 다음으로 AWS code deploy에게 빌드가 완료되었다고 알리고, EC2에 설치된 code deploy agent가 정의된 스크립트를 실행합니다.
- 스크립트는 실행되던 container를 내리고, 새로운 docker image를 pull하여 container로 실행시킵니다.
main
브랜치로 부터 실행된 컨테이너는 8080포트로 배포 서버로 실행되며,develop
브랜치로 부터 실행된 컨테이너는 8081 포트 테스트 서버로 실행됩니다.- NGINX는 DNS의 subdomain 에 따라
test-api.jungdam.tk
는 테스트 서버로,api-jungdam.tk
는 배포 서버로 reverse porxy 를 설정합니다. - AWS Certiciate Manager로 발급받은 인증서가 적용된 HTTPS 요청을 route53으로 보내고, Route53은 Elastic Load Balancer로 요청하여 지정된 인스턴스로 라우팅합니다. 이때, ELB에서 HTTPS를 HTTP 로 변환하여 인스턴스로 자원을 요청하게됩니다.

- RDB Entity 구조
- Entity Relation Diagram
- 테이블 구성
- member : 사용자 정보 테이블
- member_refresh_token : 사용자 OAuth 토큰 관리 테이블
- album : 앨범 테이블
- invitation : 사용자 앨범 초대 정보 테이블
- participant : 앨범에 대한 멤버 참여 정보 테이블
- diary : 일기 테이블
- diary_photo : 일기의 사진 테이블
- eomji : 일기에 대한 감정표현(이모지) 테이블
- comment : 일기에 대한 댓글 테이블

- Spring Boot Server 구조
- 도메인으로 분할하여 객체를 만들어두고 그 안에 정보를 담아서 각 계층 사이에 전달하게 만드는 도메인 객체 중심 아키텍처로 구성
- Layer는 4개로 구성
- Presentation
- Client의 요청을 먼저 Presentation의 Controller에서 받고, 요청의 처리를 다음 Business Layer에게 요구합니다.
- Facade
- 하나의 프로그램을 만들때 복잡도를 줄이기 위해서 서브 시스템으로 나누어 구현한다. 하지만 서비스 시스템 끼리 종속성이 생겨 복잡한 커뮤니케이션이 발생하게 되는데, 이를 위해 퍼사드 레이어를 사용합니다.
- 퍼사드에서 고수준 인터페이스를 정의하여 서브시스템(Application)을 더 쉽게 사용합니다.
- Application
- Presentation Layer와 interface를 통해서 통신하며, Client 요청을 적절히 처리한 후 데이터베이스에 데이터를 저장하거나 데이터를 꺼내기 위해 Data Access Layer(Infrastructure)에 요청합니다.
- Infrastructure
- Application Layer와 interface를 통해서 통신하며, Business Layer의 요청을 처리합니다.
- 데이터베이스에 저장하기 위해 필요한 데이터를 Domain Object에서 가져오고, 데이터베이스에서 데이터를 가져와 반환할 데이터가 있다면 Domain Object에 저장합니다.
패키지 구성
└── src ├── main │ ├── java │ │ └── com │ │ └── jungdam │ │ ├── album │ │ │ ├── application │ │ │ ├── converter │ │ │ ├── domain │ │ │ │ └── vo │ │ │ ├── dto │ │ │ │ ├── bundle │ │ │ │ ├── request │ │ │ │ └── response │ │ │ ├── facade │ │ │ ├── infrastructure │ │ │ └── presentation │ │ ├── auth │ │ │ ├── application │ │ │ ├── domain │ │ │ ├── filter │ │ │ ├── handler │ │ │ ├── infrastructure │ │ │ ├── oauth2 │ │ │ │ └── impl │ │ │ ├── presentation │ │ │ └── token │ │ ├── comment │ │ │ ├── application │ │ │ ├── converter │ │ │ ├── domain │ │ │ │ └── vo │ │ │ ├── dto │ │ │ │ ├── bundle │ │ │ │ ├── request │ │ │ │ └── response │ │ │ ├── facade │ │ │ ├── infrastructure │ │ │ └── presentation │ │ ├── common │ │ │ ├── annotation │ │ │ ├── aop │ │ │ ├── config │ │ │ ├── domain │ │ │ ├── dto │ │ │ ├── properties │ │ │ └── utils │ │ ├── diary │ │ │ ├── application │ │ │ ├── converter │ │ │ ├── domain │ │ │ │ └── vo │ │ │ ├── dto │ │ │ │ ├── bundle │ │ │ │ ├── request │ │ │ │ └── response │ │ │ ├── facade │ │ │ ├── infrastructure │ │ │ └── presentation │ │ ├── diary_photo │ │ │ └── domain │ │ │ └── vo │ │ ├── emoji │ │ │ ├── application │ │ │ ├── converter │ │ │ ├── domain │ │ │ │ └── vo │ │ │ ├── dto │ │ │ │ ├── bundle │ │ │ │ ├── request │ │ │ │ └── respones │ │ │ ├── facade │ │ │ ├── infrastructure │ │ │ └── presentation │ │ ├── error │ │ │ └── exception │ │ ├── image │ │ │ ├── application │ │ │ ├── dto │ │ │ │ ├── bundle │ │ │ │ └── response │ │ │ └── presentation │ │ ├── invitation │ │ │ ├── application │ │ │ ├── converter │ │ │ ├── domain │ │ │ │ └── vo │ │ │ ├── dto │ │ │ │ ├── bundle │ │ │ │ ├── request │ │ │ │ └── response │ │ │ ├── facade │ │ │ ├── infrastructure │ │ │ └── presentation │ │ ├── member │ │ │ ├── application │ │ │ ├── converter │ │ │ ├── domain │ │ │ │ └── vo │ │ │ ├── dto │ │ │ │ ├── bundle │ │ │ │ ├── request │ │ │ │ └── response │ │ │ ├── infrastructure │ │ │ └── presentation │ │ └── participant │ │ ├── application │ │ ├── converter │ │ ├── domain │ │ │ └── vo │ │ ├── dto │ │ │ ├── bundle │ │ │ └── response │ │ ├── facade │ │ ├── infrastructure │ │ └── presentation │ └── resources │ └── secret-keys └── test └── java └── com └── jungdam
프론트엔드
- Infra
- 구성
- github actions
- AWS S3
- AWS Cloud Front
- AWS Route 53
- AWS Certificate Manager
- CICD 과정
develop
또는main
branch로 merge되었을때 github action에 적용된 build 과정을 수행합니다.- 빌드된 결과물(정적페이지)를 AWS S3 지정 버켓에 업로드 합니다.
- 정적파일들의 빠른 파일 전송을 위해 Content Delivery Network인 Cloud Front에 올립니다.
- 클라이언트는 AWS Certiciate Manager로 발급받은 인증서와 함께 www.jungdam.tk 도메인이 등록된 route53이 적절한 cloud front에서 자원을 응답받습니다.

- Wireframe 구조
요구사항 명세서를 통해 wireframe 을 구성

- React 구조
- 페이지 구성
/tutorial
→ LandingPage ( 접속 시 가장 먼저 접근하게 되는 페이지)/login
→ LoginPage ( 로그인 페이지 - 소셜 로그인 페이지 )/album
→ AlbumListPage (앨범 리스트 페이지) ,/album/최민석
으로 사용자에게 제공하는것도 좋을듯/album/new
→ AlbumCreatePage (앨범 생성 페이지)/album/profile
→ ProfilePage (프로필 페이지)/album/:(앨범정보)
→ AlbumMainPage (앨범 메인 페이지)/album/:(앨범 정보)/diary/:(일기 정보)
→ DiaryPage(일기 상세 페이지)/album/:(앨범 정보)/diary/new
→ DiaryCreatePage (일기 생성 페이지)/album/:(앨범 정보)/members
→ MemberListPage (멤버 리스트 페이지)/album/:(앨범 정보)/members/invite
→ MemberInvitePage (멤버 초대 페이지)/album/:(앨범 정보)/settings
→ AlbumSettingsPage (앨범 설정 페이지)/album/:(앨범 정보)/settings/edit
→ AlbumSettingsEditPage (앨범 수정 페이지)/album/:(앨범 정보)/storybook
→ StorybookPage (스토리북 페이지)/album/:(앨범 정보)/moment
→ SpecialMomentPage (특별한 순간 페이지)
패키지 구성
src ├── assets │ ├── Image │ ├── colors │ ├── fonts │ └── lottie ├── common │ ├── api │ └── utils ├── components │ ├── base │ │ ├── Avatar │ │ ├── Button │ │ ├── Divider │ │ ├── Icon │ │ ├── Image │ │ ├── Input │ │ ├── Lottie │ │ ├── Modal │ │ ├── ProgressBar │ │ ├── Skeleton │ │ ├── Spinner │ │ ├── Textarea │ │ └── Upload │ └── domain │ ├── AlbumInviteList │ ├── AlbumSwiper │ ├── DiaryComment │ ├── DiaryCommentInputForm │ ├── DiaryContent │ ├── DiaryCreateStepOne │ ├── DiaryCreateStepThree │ ├── DiaryCreateStepTwo │ ├── DiaryHeaderInfo │ ├── DiaryImages │ ├── Header │ ├── LandingSwiper │ ├── Navigation │ ├── Profile │ ├── ProfileList │ ├── StoryBookDiaryList │ └── UserCard ├── hooks ├── pages │ ├── AlbumCreatePage │ ├── AlbumListPage │ ├── AlbumSettingsEditPage │ ├── AlbumSettingsPage │ ├── DiaryCreatePage │ ├── DiaryPage │ ├── Error404Page │ ├── LandingPage │ ├── LoginPage │ ├── MemberInvitePage │ ├── MemberListPage │ ├── OAuthRedirect │ ├── ProfilePage │ ├── SpecialMomentPage │ ├── StoryBookDetailPage │ ├── StoryBookPage │ └── TestPage ├── redux │ ├── album │ └── member ├── router ├── stories │ └── components └── styles
기대 효과 - 빙글뱅글
- 가족 간 유대감 형성
- 앨범 공유자들 사이의 교류 증진
- 일기라는 서비스를 통한 꾸준한 플랫폼 이용효과 기대
- 많은 사진을 저장하고 싶은
프로젝트 팀 구성 및 역할 [⭐️개인 작성 필수 ] (노션)
담당 업무 : 훈련생 별로 해당 프로젝트를 진행하면서 주도적으로 참여한 부분을 중심으로 작성할 것
- 최민석
- 스크럼 팀장
- 전체적인 스프린트 관리 및 일정 관리
- 개발 사항
- 인증
- OAuth2.0 소셜 로그인
- 남명훈
- 프론트 팀장
- 프론트엔드 회의 주도 및 일정, 문서 관리
- 개발사항
- 앨범 메인 페이지
- 캘린더
- 타임라인
- 일기 상세 페이지
- 일기 내용 조회/수정/삭제
- 일기에 대한 댓글 생성/조회/수정/삭제
- 일기 생성 페이지
- 일기 내용 생성
- 이미지 업로드 및 미리보기
- 사용자 입력 폼
- 공통 컴포넌트
- Upload, ProgressBar, Icon
- 이소진
- 컴포넌트 구성
- Avatar, Modal, Input, Textarea, Header, UserCard
- 페이지 구성
- 멤버 리스트 페이지
- 현재 앨범에 참여중인 멤버의 리스트 조회
- 멤버 초대 페이지
- 가입된 유저를 이메일로 검색
- 앨범 초대 기능
- 앨범 설정 페이지
- 앨범 삭제 기능
- 앨범 정보 수정 페이지
- 앨범의 이름, 대표사진, 가훈 정보 수정
- 특별한 순간 페이지
- 북마크 게시글 슬라이드 구현
- 조수연
- 역할 : 문서 관리자
- 깃허브 협업 규칙 문서화 및 노션 문서 관리
- 앨범, 초대, 다이어리, 회원 도메인 REST API 구현
- 개발사항
- 앨범 생성
- 앨범 목록 조회
- 초대 목록 조회
- 초대 수락/거절
- 프로필 조회
- 프로필 수정
- 스토리북 조회
- 스토리북 더 보기 조회
세부 사항 (PPT로 만들면 생략될 것 같아서 위에는 요약해서 작성했습니다)
- 김동건
- 백엔드 팀장
- 백엔드 개발 일정 관리
- 개발사항
- 공통 도메인
- Exception처리 로직 구성
- Response처리 로직 구성
- Config 및 Properties 적용 로직 구성
- Utility Class 구현
- 각 도메인에 대한 JPA 로직 및 VO 계층 설계 및 구현
- 인증 및 인가
- OAuth2 인증 및 인가 로직 구성
- 카카오 인증 및 인가
- 네이버 인증 및 인가
- 구글 인증 및 인가
- OAtuh 인증 및 인가 로직 구성
- 회원 정보 조회
- 회원 가입
- 로그인
- token refresh
- 댓글
- 댓글 생성
- 댓글 수정
- 댓글 단건 삭제
- 댓글 페이징 조회
- 일기
- 일기 생성
- 일기 수정
- 일기 단건 삭제
- 일기 단건 조회
- 북마크 생성 및 삭제
- 특정 날짜에 일기가 작성되었는지 조회
- 월/일(날짜)별 일기 조회
- 이모지
- 이모지 생성 및 삭제
- 이모지 전체 조회
- 앨범
- 앨범 제목 및 가훈 조회
- 참여자
- 엘범에 소속된 인원인지 조회
- 황일용
- PO
- 백엔드, 프론트 CICD 파이프라인 구축
- 개발사항
- AWS S3 Image Upload 기능
- 앨범 초대 기능
- 멤버 리스트 조회 기능
- 특별한 순간 조회 기능
- 회원 검색 조회 기능
- 앨범 삭제 기능
- 앨버 수정 기능
프로젝트 수행 절차 및 방법 [ 초이가 적습니다.]
프로젝트의 사전 기획과 프로젝트 수행 및 완료 과정을 나누어서 작성합니다. 프로젝트 수행 절차를 도식화 및 기획서 등을 가지고 수정해서 작성합니다.
- 기간/활동/비고 등등..
- 스프린트 기간과 원래 계획한 기획 단계를 표로 작성하기
프로젝트 수행 결과 [ 프/백 ] 따로 작성하기
[프로젝트 수행 결과]는 프로젝트 결과물이 도출된 과정을 세부적으로 기록합니다.
- 예시는 하나의 사례로 간단하게 제시했지만, 프로젝트 성격에 따라 보다 자세하게 기록, 결과물을 서술하는 과정에서 활용한 기술 + 핵심기능 + 검증 결과를 자세하게 기재합니다.
- 빅데이터 직종의 경우 정확도를 나타냅니다.
- 프로젝트 결과는 그 과정이 잘 드러날 수 있도록 전체적인 프로세스 단계별로 작성합니다.
결과물 사진 및 시연 동영상
등 프로젝트 우수성을 드러날 수 있는 자료가 필요합니다.
내가한거, 내가 열심한거, 내가 배운거, 내가 쓴 기술..
자체 평가 의견 [⭐️ 개인 작성 필수 ] (노션)
[자체 평가 의견]은 프로젝트 결과물에 대한 프로젝트 기획 의도와의 부합 정도 및 실무 활용 가능 정도, 달성도, 완성도 등 훈련생의 자체 평가 의견과 느낀점을 작성합니다. ex) 모델 평가 결과, 정확도가 00.00%로 정확도 향상을 위해 모델 추후 개선이 필요로함. - 프로젝트를 수행하면서 느낀 점 + 경험한 성과에 대해서 기재할 수 있고 경력 계획 등과 연관시켜서 팀별 공통 의견 또는 개인 의견을 자유롭게 작성합니다.
- 자세히적어주세요!!!!!!!!!!!
- 최민석
아쉬운 점
잘한 점
- 남명훈
- 모두가 성장하는 배워가는 입장이다 보니 촉박한 일정에 맞춰 기획 - 디자인 - 개발의 과정속에서 수많은 규칙들을 지키며 기록을 해나가며 동시에 결과물을 도출하는 과정이 쉽지 않았다. 단순 개발이 아닌 말 그대로 새로운 결과물을 만들어내는 프로세스에 대하여 실무자와의 좀 더 많은 접촉이 있었더라면 어땠을까? 최종 프로젝트 진행에서 최소 스프린트 단위에 대한 피드백을 강제적으로 받을 수 있었다면 어땠을까 ?
- 기간이 항상 짧다라고 느껴졌고 팀원들과 처음에 기획한 협업 과정 룰을 지키며 기간을 더 길게 가져갔다면 어땠을까 ? 분명 더 디테일한 퀄리티를 자랑하는 결과물을 낼 수 있었을 것 이다.
- 개발 과정에서 발생하는 모든 이슈들에 대해 팀원들이 서로를 존중하며 이슈를 인지하고 해결해나가는 과정 속에서 모두가 적극적이였다.
- 각자 주어진 역할에 대해서 성실히 책임감을 가지고 역할 수행을 진행하였다.
- 기획의 중요성을 모두가 인지하고 있었고 기획과 디자인 초안의 작업을 진행할 때 모두가 왜? 라는 생각을 가지고 우리의 결과물을 위해 최대한 까다롭게 기획을 진행하였다.
- 기본적으로 협업과정이 매끄럽게 진행되었고 비동기적인 커뮤니케이션을 다들 잘 수행하였다.
아쉬운 점
잘한 점
- 이소진
- 시간이 많이 부족하다고 느꼈다. 기획 단계의 시간을 포함해서 GUI 작업과 개발 환경을 맞추는 시간으로 프로젝트 기간의 절반정도가 걸린 것 것 같다.
- 담당한 부분에서의 기본적인 페이지와 기능 구현이 지금쯤 마무리가 되어서 남은기간동안 리펙토링과 테스팅을 해보는 시간을 가졌으면 프로젝트를 더 완성도있게 끝낼 수 있었을 것이라는 아쉬움이 있다.
- 한 주제로 한번 리뷰를 받은 것들을 되돌아와서 추가작업을 한 경우가 많았다. 조금 더 확장성과 에러, 테스트를 확실히 해야할 것 같다.
- 프로젝트를 진행할 때 수월하게 진행할 수 있는 방법에 대해 고민해보게 되었고, 팀원들에게 배울 수 있었다. 다음 프로젝트는 조금 더 수월하게 진행할 수 있지 않을까 생각된다.
- 여러 이슈에 부딪혀보다보니, 겪었던 문제들의 원인과 해결법을 잘 파악할 수 있었고 해당 문제에 대해서는 앞으로 수월하게 해결할 수 있겠다는 생각이 들었다.
- 협업 시의 의사소통 방식이나 의견을 취합하는 과정이 체계적으로 이루어지도록 다들 노력해주셔서 많이 배울 수 있었다고 생각한다.
아쉬운 점
잘한 점
- 조수연
- 스프링 시큐리티나 인프라 관련 지식이 부족해서 도움이 되지 못해서 아쉽습니다. 전반적인 프로젝트에 대한 기여도가 낮아지기도 해서 앞으로 더 많이 학습해야겠다고 생각했습니다.
- 짧은 기간 내에 구현에 집중하다보니 테스트 코드를 작성하지 못한 부분이 아쉽습니다. 추후에는 아무리 바빠도 테스트 코드와 함께 코드를 짜도록 노력해야겠습니다.
- 프론트엔드 기준으로 맞춰서 화면 단위로 API 구현을 배분한 점이 아쉬웠습니다. 도메인 단위가 아니라 화면 단위이기 때문에 어려 도메인을 넘나들면서 개발을 진행해야 해서 조금 더 집중해서 개발하기도 어려웠고, 다른 팀원들의 코드에 영향을 줄까봐 놓친 부분들도 많아서 아쉽습니다.
- 새로운 시도들을 많이 할 수 있어서 좋았습니다. 기능 구현에만 집중한 이전의 프로젝트와 달리 객체 지향이나 클린 코드 등에 대해 고민하면서 개발한 경험은 추후에도 좋은 개발 습관으로 남을 것 같습니다.
- 원활한 협업을 위해 협업 규칙을 설정하고 메뉴얼 문서를 작성해 팀의 협업을 도왔습니다. 이슈 기반으로 브랜치를 생성 후 작업을 진행해서 좀 더 명확하게 이슈 트랙킹이 가능해서 팀의 진행 상황을 한 눈에 알 수 있었습니다.
- 코드리뷰를 통해 많이 배울 수 있었습니다. 서로의 코드를 보며 맞춰가면서 팀 단위의 코드의 일관성을 가질 수 있었고, 세심한 코드리뷰를 통해서 몰랐던 부분을 많이 알아갈 수 있었습니다.
아쉬운 점
잘한 점
- 김동건
- 코드에 대한 신뢰성
- 프로덕트 코드에 대해서 인섬니아와 도메인 테스트를 진행했지만, 다른 레이어에 대한 테스트 코드를 작성하지 못했습니다. 그렇기 때문에 코드에 대한 신뢰성이 절반 이하로 진행되게 되었습니다.
- 테스트 코드 미작성으로 인해서 프로덕트 코드에서 발생하는 예상치 못한 에러를 잡지 못하는 이슈가 존재했습니다. 더불어 각 도메인 간의 연관관계가 잘못되어 있음을 파악하지 못했습니다.
- 프로젝트의 완성도
- 프로덕트 코드에 대한 리펙토링을 진행해야 하고, 테스트 코드를 통해 신뢰성을 향상시켜야 합니다. 원래 예상했던 테스트 커버리지 목표를 이루지 못했기 때문에 구현은 되었지만, 반쪽만 된 상태입니다.
- 인증 및 인가 로직을 구현하면서 리펙토링을 완벽하게 진행하지 못했습니다. 클린코드의 법칙을 준수하지 못했습니다.
- 코드 리뷰
- 초기 수행에서는 코드리뷰를 진행하며, 코드에서 발생한 문제를 수정하는 시간을 가졌습니다. 그러나 시간이 촉박해지면서 리뷰보다는 돌아가는 코드에 집중하게 되었습니다.
- 일급 컬렉션 사용
- 객체지향 패러다임을 적용한 프로덕트 코드를 구현하면서, 데이터 지향 주의를 타파할 수 있었습니다. 각 VO를 통해 비즈니스 로직을 구성하면서 각각의 도메인이 역할과 책임을 다할 수 있도록 구현할 수 있었습니다.
- Dto 세분화
- dto를 request, response, bundle로 나누면서 각 Layer간의 데이터 종속성을 벗어날 수 있었습니다. 하나의 Layer에서 확장이 발생하면, 해당 dto에서만 수정 또는 확장을 가져갈 수 있었기 때문에 수정과 확장에서 유리한 구조를 가질 수 있었습니다.
- 코드 자동화
- 단순하게 반복되는 코드에 대해 Common 및 Utility 도메인으로 단일화를 진행했습니다. 메모리 낭비를 줄일 수 있었고, 코드 자동화를 통해 생산성을 향상시킬 수 있었습니다.
아쉬운 점
잘한 점
- 황일용
- 프로젝트 기간을 4주로 잡으면서 시간이 적당한 줄 알았지만, refactoring이 필요한 예상치 못했던 장애나 이슈들을 해결해야 하는 시간들도 생각하지 못했던 점들이 아쉬웠습니다.
- 개발에 들어가면서 공통로직을 정확히 어디까지 같이 짜면 좋을지 알았더라면 도메인 별로 역할을 분리하여 개발하면 어땠을까 하는 아쉬운 점이 있습니다.
- 제 생각을
- 서비스를 처음부터 끝까지 팀원들과 함께 고민하고 개선해 나가면서, 평소에 잘 적용하지 못했던 애자일 개발 방법론 등이나 피그마와 같은 다양한 협업툴들 사용하면서 배울 수 있어 좋았습니다.
- Spring JPA를 ORM답게 사용하는 시도와 Facade Layer 도입 등 팀원들과 다양한 개발방식들에 대한 시도를 하여 경험을 쌓을 수 있어서 좋았습니다.
- 팀 역할에서 CICD 파이프라인을 구축하거나 비밀 키를 관리하기 위해 서브 모듈 레포지터리를 사용하는 등 제가 좋아하고 잘하는 분야가 어떤 것인지 깨닫게 되었고, 협업 과정 중 컨벤션 통일 및 객체 지향 프로그래밍에 대해 코드 리뷰를 받으면서 어떤 부분이 약하고 배울점들이 많은지 깨닫게 되어 좋았습니다.
- AWS S3 이미지 업로드 사이즈 제한 오류와 Infra 장애 등 개발을 진행하면서 겪은 다양한 이슈에 대해 리뷰하고, 해결방법을 다 같이 공유하고 찾아갈 수 있어서 좋았습니다.
- 프로젝트를 마무리하고 데브코스를 수료하기위해 입사를 미뤘지만 후회 없이 많은 것들을 배울 수 있어서 좋았습니다.