인턴 회고록

박효상·2022년 3월 21일
0

회고록

목록 보기
3/4

서론

인턴쉽을 마치며

드디어 숨가쁘게 달려온 인턴쉽이 마무리되었다.
학교 수업을 벗어나 아르바이트를 제외한 다른 조직에서 내 분야로 일을 해본 건 처음 있는 일이라 시작 전부터 설레었다. 내가 갈 곳은 그로우앤베터라는 스타트업! 이젠 멘토링 없이 같이 배정된 2명의 팀원들과 이때까지 키워온 실력으로 개발을 전부 진행해야 한다는 부담감도 있었지만, 한편으론 빨리 내 진짜 실력을 확인하고 증명하고 싶다는 생각이 들기도 했다

인턴 기간

2021/02/14 ~ 2022/03/11 (4주)

프로젝트 소개

그로우앤베터 Admin 페이지에서 프로그램 설문지 양식을 관리하고 설문지에 대한 유저 응답 데이터의 통계 결과를 확인할 수 있는 서비스를 구현하는 프로젝트

팀 구성

기획: 1명, 프론트: 1명 ,백엔드: 2명 (추가로 회사에 프론트 한 분, 백엔드 한 분이 계셨지만, 사수 역할)

백엔드 기술 스택

Backend: Node.js, Typescript, Sequelize, MySQL
Development Tools: VScode, Github, TablePlus, Postman
Community Tools: Slack, Zoom, Notion

 

본론

업무 진행 단계

  1. 프로젝트 기획안 확인
  2. 백엔드에 필요한 Task와 일정 산정
  3. 백엔드 업무 분담 및 Task Timeline 작성
  4. dbdiagram.io를 활용한 Database ERD 설계
  5. Sequelize를 활용한 Database Modeling
  6. Task Timeline에 맞춰 API 구현 & 프론트와 연결 & 테스트
  7. 최종 시현
  8. API 명세서 작성

백엔드에 필요한 Task 산정

내가 담당한 기능

  • Database ERD 설계 - 기존 그로우앤베터 Database 모델링을 활용하여 프로젝트에 필요한 Entity 설계 및 Sequelize를 활용한 모델링 (팀원과 공동 담당)
  • Survey 생성 API - admin이 특정 프로그램 수강생들을 대상으로 하는 Survey 양식을 생성할 수 있게 해주는 API
  • Survey 전체 조회 API - admin이 생성한 모든 Survey 양식을 조회할 수 있게 해주는 API
  • Survey 상세 조회 API - admin이 전체 Survey 중 특정 Survey 양식을 상세 조회할 수 있게 해주는 API
  • Survey 수정 API - admin이 이미 존재하는 특정 Survey 내부 양식을 수정할 수 있게 해주는 API
  • 자동완성 검색 API - admin이 Survey 내부 양식에 있는 프로그램 검색란에서 한 글자 단위로 프로그램명을 입력시 이에 해당하는 전체 프로그램명을 자동으로 보여주고 선택할 수 있게 해주는 API

Task Timeline

  • Task 진행 상황을 상세히 알기 위해 가장 작은 단위까지 쪼개서 Timeline 설정

Database ERD

  • ORM을 이용하여 비즈니스 로직을 구현할 때, 종속 관계의 테이블이 많아질수록, 구현 난이도가 어려워진다는 것을 이번 인턴쉽을 통해 깨닫게 되었다. 테이블에 Attribute가 많아지더라도, 테이블 수를 줄이는 것이 차후 구현을 위해 편하다!

결과물

  • Survey 전체 조회 API

Survey 생성 API & 자동완성 검색 API

Survey 상세 조회 API & Survey 수정 API

결론

잘한 점

  • 주어진 기간 내 담당 업무 마무리 - 주어진 기간 내에 내가 담당한 API들을 테스트와 시현까지 모두 마무리했다는 것에 뿌듯했다
  • Typescript에 맞게 any 처리 없이 모두 type 지정 - 처음엔 Typescript가 익숙하지 않아 대부분 any로 type을 지정하고 넘어갔지만, 리팩토링을 진행하면서 에러가 안 뜰 때까지 모두 type을 지정해준 것이 잘했다고 생각한다
  • 데이터 보존을 위한 soft delete 처리 - Survey 수정 API 구현 간에 있어 수정이 발생했을 시 기존 Survey 양식은 기획 의도에 맞게 Database에서 삭제되면 절대 안된다고 하여 deleted라는 attribute를 생성하여 Boolean값으로 soft delete 처리를 했고 정상 작동했을 때 감격했다

아쉬운 점

  • 레거시 코드 이해의 어려움 - 외주사에서 만든 레거시 코드라 구현보다 코드 이해하는데 시간 소모가 너무 많아 추가 기능 구현을 못한게 아쉬웠다
  • 코드 방향 불확실 - 코드리뷰를 해주시는 개발자분들과 비대면으로 커뮤니케이션이 계속 오가다 보니 내가 작성하는 코드 방향이 옳은지 확인하기가 어려웠다

깨달은 점

  • 기획 의도에 맞는 개발의 어려움 - 내가 필요한 대로 자유롭게 기능을 추가/삭제하는 것이 아닌 미리 기획된 또는 수정된 유즈 케이스에 맞춰 구현하는 것은 생각보다 많이 어려워서 이것이 진짜 실무라는 것을 느낄 수 있었다
  • 프론트와 사전 조율의 중요성 - 어떤 데이터를 주고 받고, 데이터명은 어떻게 할지, 그리고 백엔드 엔드포인트는 어떻게 할지 등등 프론트와 백엔드 연결간에 발생할 문제들을 프론트 개발자와 사전 조율하는 것이 매우 중요하다는 것을 깨달았다
  • 가독성 좋은 코드 작성의 중요성 - 진짜 실력있는 개발자가 되려면, 기능 구현만 했다고 끝나는 것이 아니라 나만 이해할 수 있는 코드가 아닌 다른 개발자들도 쉽게 이해할 수 있는 코드를 작성하는 것이라는 걸 너무 잘 알게 되었다
profile
집념의 백엔드 개발자

0개의 댓글