HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🧚
[1기]최종 프로젝트 데브코스
/
👼
[팀2] 극락이들
/
🐣
팀별 프로젝트 수행 결과 [제출용] / 2021-12-19 [AM 12시 30까지]
🐣

팀별 프로젝트 수행 결과 [제출용] / 2021-12-19 [AM 12시 30까지]

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

 
[별첨2] 팀별 프로젝트 수행 결과 작성 양식.pptx
1694.6KB

프로젝트 개요


프로젝트 주제 및 선정 배경 (기획 의도) ✅

notion image

프로젝트 개요 (프로젝트 구현 및 컨셉, 훈련 내용과의 관련성) - 극락

    활용 장비 및 재료 ( 개발 환경 등 ) - 훈멋

    프론트엔드

    • React (CRA)
    • 상태관리: Redux-toolkit + Thunk
    • 스타일: Emotion
    • UI 테스트: Storybook
    • 인증 : OAuth2.0
    • 인프라
      • notion image

    백엔드

    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

    notion image

    프로젝트 구조 - 데비형

    백엔드

    1. Infra 구조
      1. notion image
        • 구성
          • 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 로 변환하여 인스턴스로 자원을 요청하게됩니다.
    1. RDB Entity 구조
        • Entity Relation Diagram
          • notion image
        • 테이블 구성
          • member : 사용자 정보 테이블
          • member_refresh_token : 사용자 OAuth 토큰 관리 테이블
          • album : 앨범 테이블
          • invitation : 사용자 앨범 초대 정보 테이블
          • participant : 앨범에 대한 멤버 참여 정보 테이블
          • diary : 일기 테이블
          • diary_photo : 일기의 사진 테이블
          • eomji : 일기에 대한 감정표현(이모지) 테이블
          • comment : 일기에 대한 댓글 테이블
    1. Spring Boot Server 구조
      1. 패키지 구성
        └── 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
        • 도메인으로 분할하여 객체를 만들어두고 그 안에 정보를 담아서 각 계층 사이에 전달하게 만드는 도메인 객체 중심 아키텍처로 구성
        • 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에 저장합니다.

    프론트엔드

    1. Infra
      1. notion image
        • 구성
          • 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에서 자원을 응답받습니다.
    1. Wireframe 구조
      1. 요구사항 명세서를 통해 wireframe 을 구성
        notion image
    1. React 구조
      1. 패키지 구성
        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
        • 페이지 구성
          • /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 (특별한 순간 페이지)

    기대 효과 - 빙글뱅글

    • 가족 간 유대감 형성
    • 앨범 공유자들 사이의 교류 증진
    • 일기라는 서비스를 통한 꾸준한 플랫폼 이용효과 기대
    • 많은 사진을 저장하고 싶은
     

    프로젝트 팀 구성 및 역할 [⭐️개인 작성 필수 ] (노션)


    담당 업무 : 훈련생 별로 해당 프로젝트를 진행하면서 주도적으로 참여한 부분을 중심으로 작성할 것
    • 최민석
      • 스크럼 팀장
      • 전체적인 스프린트 관리 및 일정 관리
      • 개발 사항
        • 인증
          • 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 장애 등 개발을 진행하면서 겪은 다양한 이슈에 대해 리뷰하고, 해결방법을 다 같이 공유하고 찾아갈 수 있어서 좋았습니다.
          • 프로젝트를 마무리하고 데브코스를 수료하기위해 입사를 미뤘지만 후회 없이 많은 것들을 배울 수 있어서 좋았습니다.