항해99 실전프로젝트 1주차

태량·2023년 4월 9일
0

4/1 TIL

  1. 금일의 목표 과제 및 진행 상황

    • 목표 과제 :

    • 오늘은 실전 프로젝트 2일차로 도서관 서비스를 위한 기본 프론트 영역 작업을 실시 했습니다. 프론트 영역은 js를 제외하고 html과 css를 가지고 실시 했으며, css는 주로 부트스트랩을 사용.

    • 진행 상황
      프론트 영역 작업 페이지 <구현 완료> :

    • 로그인, 회원가입,메인 페이지, 검색 결과 페이지, 마이 페이지

    • 참고 내용

      1. 디자인 모티브 : 성남 복정 도서관 https://www.snlib.go.kr/bj/index.do
        • 우리 팀 프로젝트의 목적은 기술적인 도전과 연마이기 때문에, 그와 약간 거리가 먼 프론트 영역 파트는 많은 시간과 노력을 쏟지는 않지만 직관적으로 필수 기능들은 있게 목표로 하였습니다.
  2. 오늘 새롭게 배우고 성장한 부분

    • 스프린트 방식의 협업 방식
      • 오늘 목표 과제를 해결하기 위해 페이지 구현 분담을 2시간 이내의 짧은 시간으로 1개 정도의 페이지를 한 명씩 부여함으로써, 짧은 주기를 가지며 집중력 있게 문제 해결을 할 수 있어서 좋았습니다. 또한 2시간 이후 결과물에 대해 피드백을 갖는 시간을 통해서 다른 팀원들의 생각을 듣을 수 있어서 좋았습니다.
    • git flow 방식의 적용
      1. git action을 이용한 branch 정리 자동화
        • git action을 통해 merge된 branch가 gitHub 상에서 자동으로 병합 후 삭제되는 설정 파일을 추가 하였습니다. 덕분에 작업이 완료된 branch가 정리되어 필요한 branch만 한눈에 볼 수 있어서 좋았습니다.
      2. git branch protect rule
        • main, dev, feature branch를 통한 git flow를 채택 했으며, main과 dev에는 push에 대한 rule을 설정 하였습니다. main은 read-only로 실수로 pull-request를 통한 merge도 방지하기 위해 설정 하였습니다. 그리고 dev는 pull-request 이후 reviewer의 review 이후 merge가 가능한 룰을 설정 하였습니다.
  3. 프로젝트의 품질을 높이기 위한 고민과 방안

    • S.A 피드백에 대한 우리의 분석
      • 피드백 내용 노션에서 이미 언급하신대로, 비지니스 관점에서 도입해볼 수 있는 기능 및 성능적으로 트러블 슈팅해볼 수 있는 부분들이 많은 주제라서 괜찮은 것 같습니다. 다만 기획 자체는 괜찮아도 실제 서비스에서 다뤄지는 데이터 규모나 트래픽 규모가 낮다면 프로젝트의 취지에 크게 와닿지 않을 수 있는데, 이런 부분을 잘 상보할 수 있는 방법에 대해서도 고민해보시면 좋을 것 같습니다. 예를 들어, 기술적으로 해결하는 방안이긴 합니다만 nGrinder와 같은 부하 테스트 도구를 활용하는 것도 한 가지 방법이 될 수 있을 것 같습니다. 💥 피드백에 대한 계획 → 데이터 규모(15만권의 도서 데이터에서 100만 도서 데이터로 업그레이드) 필요
        • 현재 98만건의 도서 데이터 확보 완료. csv → RDBMS import 작업까지 완료. (23/4/1 인준)

          → 우리가 4/1 적용하고 업데이트 한 git flow에 대한 내용 노션에 명시 필요.

          → 트래픽에 대한 부하 관련 슈팅을 위해 구체적인 부하 테스트 계획 필요.

        • 코드 통합 방법(브랜치 전략)은 좀 더 디테일해질 필요가 있을 것 같습니다. 대부분은 Github을 사용하고 있으므로, Git flow나 Trunk based development 등 몇 가지 코드 통합 방법을 한번 빠르게 학습해보시고, 프로젝트에 적합한 방안으로 확립해주시면 좋겠습니다. 일반적으로 Git flow 전략으로 대부분의 프로젝트는 커버가 가능하니, 학습할 시간이 많지 않다면 Git flow로 진행하셔도 좋습니다.

          → git flow

          → 과제 : git flow 정리해서 노션에 작성 작업.

        • 학습자료 항목에 적어두신 2개의 책은 지금 읽기엔 별로 추천드리고 싶진 않습니다. Mysql 같은 경우는 결국 공식 문서(https://dev.mysql.com/doc/refman/8.0/en/)를 읽는게 가장 바람직하고, 선택적으로 필요하신 부분을 학습하셔야 할 때에도 마찬가지입니다. 가상 면접... 이 책은 실제로 제가 약 3회독을 한 책인데, 지금 읽으시는 것보다는 현재 백엔드 아키텍쳐에 들어가는 주요한 요소들(Java, Spring ...)에 먼저 집중해서 학습하시는게 좋습니다. 즉, 설계를 완성한뒤에 구현까지 다 하시고 난 뒤에 읽으셔도 늦지 않습니다.

        • 요구사항은 명확하고 자세하게 잘 정의해주셨습니다. MVP 스코프도 적절합니다. 추후에 기능을 구현하면서 더 추가적인 요구사항들이 생길 수 있는데, 그런 여지를 고려하면서 인터페이스를 설계해주시는게 중요합니다. 유연한 인터페이스 설계에 대한 한 가지 팁을 드리자면 처음부터 모든걸 다 정의하려고 하기 보다 반드시 필요한 것들만 정의하고, 나머지는 아무것도 없는 상태로 유지하면서 코드 구조에서 어디에서 반복되거나 중복되는 부분이 발생하는지를 관찰해보시기 바랍니다. 그런데, 구현 계획에서 내용들이 다소 추상적입니다. 검색 엔진 구현에서 어떤 DB를 사용하고, 도서 데이터를 인덱싱한다면 어떤 필드를 기준으로 인덱싱을 할 것인지 등의 좀 더 구체적인 구현 계획이 나와있어야 합니다. 다른 항목들도 마찬가지입니다. 구현 계획의 각 요소에 대해 최대한 자세하게 서술해주세요. 그 내용을 기반으로 1주차부터 더 심층적인 피드백을 드리면 좋을 것 같습니다. 그리고 API 명세와 ERD가 없는 상태이기 때문에 추상적으로 나올수밖에 없는걸로 보이는데, 현재 기획안과 요구사항을 기반으로 API 명세서와 ERD
          를 반드시 작성해주시기 바랍니다.

          → 구현 계획에 적힌 필요 기술들에 대한 상세한 내용이 부족하다. 어떤 라이브러리를 쓸지, 어떤 기술들이 흐름으로 흘러갈지.

          → 구현 기술에 대한 정보 파악을 위해 전 기수의 깃 코드들을 살펴보자.

          노션에서 이미 언급하신대로, 비지니스 관점에서 도입해볼 수 있는 기능 및 성능적으로 트러블 슈팅해볼 수 있는 부분들이 많은 주제라서 괜찮은 것 같습니다. 다만 기획 자체는 괜찮아도 실제 서비스에서 다뤄지는 데이터 규모나 트래픽 규모가 낮다면 프로젝트의 취지에 크게 와닿지 않을 수 있는데, 이런 부분을 잘 상보할 수 있는 방법에 대해서도 고민해보시면 좋을 것 같습니다. 예를 들어, 기술적으로 해결하는 방안이긴 합니다만 nGrinder와 같은 부하 테스트 도구를 활용하는 것도 한 가지 방법이 될 수 있을 것 같습니다.

          💥 피드백에 대한 계획

          💡 현재 약 500만건의 도서 상세 정보 데이터 확보 완료. csv → RDBMS import 작업까지 완료. 💡 Git flow : Git flow 및 github branch rule 기능 설정, git 커밋 규칙 완성 💡 부하 테스트 : Jmeter를 적용 도입 계획 중이나 현재 우리의 검색 성능을 측정하기 위해 AOP 방식의 Timer 클래스 작성. 그 후 로그 파일로 남길 생각( 중간 발표 전까지)

          → git flow

          → 과제 : git flow 정리해서 노션에 작성 작업.

        • 학습자료 항목에 적어두신 2개의 책은 지금 읽기엔 별로 추천드리고 싶진 않습니다. Mysql 같은 경우는 결국 공식 문서(https://dev.mysql.com/doc/refman/8.0/en/)를 읽는게 가장 바람직하고, 선택적으로 필요하신 부분을 학습하셔야 할 때에도 마찬가지입니다. 가상 면접... 이 책은 실제로 제가 약 3회독을 한 책인데, 지금 읽으시는 것보다는 현재 백엔드 아키텍쳐에 들어가는 주요한 요소들(Java, Spring ...)에 먼저 집중해서 학습하시는게 좋습니다. 즉, 설계를 완성한뒤에 구현까지 다 하시고 난 뒤에 읽으셔도 늦지 않습니다.

          💡 Mysql 검색 쿼리 성능을 높이기 위해 mysql 공식 문서, 기존 도서를 가지고 있는 mysql 8.0 1권 참고

          자료구조, 자바, JPA, 테스트 코드, 스프링과 관련 된 내용에 집중

        • 요구사항은 명확하고 자세하게 잘 정의해주셨습니다. MVP 스코프도 적절합니다. 추후에 기능을 구현하면서 더 추가적인 요구사항들이 생길 수 있는데, 그런 여지를 고려하면서 인터페이스를 설계해주시는게 중요합니다. 유연한 인터페이스 설계에 대한 한 가지 팁을 드리자면 처음부터 모든걸 다 정의하려고 하기 보다 반드시 필요한 것들만 정의하고, 나머지는 아무것도 없는 상태로 유지하면서 코드 구조에서 어디에서 반복되거나 중복되는 부분이 발생하는지를 관찰해보시기 바랍니다. 그런데, 구현 계획에서 내용들이 다소 추상적입니다. 검색 엔진 구현에서 어떤 DB를 사용하고, 도서 데이터를 인덱싱한다면 어떤 필드를 기준으로 인덱싱을 할 것인지 등의 좀 더 구체적인 구현 계획이 나와있어야 합니다. 다른 항목들도 마찬가지입니다. 구현 계획의 각 요소에 대해 최대한 자세하게 서술해주세요. 그 내용을 기반으로 1주차부터 더 심층적인 피드백을 드리면 좋을 것 같습니다. 그리고 API 명세와 ERD가 없는 상태이기 때문에 추상적으로 나올수밖에 없는걸로 보이는데, 현재 기획안과 요구사항을 기반으로 API 명세서와 ERD
          를 반드시 작성해주시기 바랍니다.

          💡

          프로젝트 데이터 셋 정보

          → 구현 계획에 적힌 필요 기술들에 대한 상세한 내용이 부족하다. 어떤 라이브러리를 쓸지, 어떤 기술들이 흐름으로 흘러갈지.

          → 구현 기술에 대한 정보 파악을 위해 전 기수의 깃 코드들을 살펴보자.

profile
좋은 영향력과 교류를 위하여

0개의 댓글