[SOPT 세미나] 서버 파트 6차 세미나 (합동 세미나) 회고, 제페토가 몬가요?

SSO·2022년 5월 29일
0

SOPT 30기

목록 보기
7/9

👩‍💻 6차 세미나 (합동 세미나) 회고

6차 세미나는 이제까지 세미나에서 배운 내용을 가지고 합동 세미나로 진행하였다. 클라이언트가 제시한 view를 보고 필요한 API를 생각 및 설계하고, 해당하는 API 명세서를 작성해서 클라이언트에게 전달하는 첫 협동시간을 가져볼 수 있었다.


💜 사전 과제

6차 세미나 전에 같은 팀의 다른 서버 사람과 온라인으로 모여 사전 과제를 진행했다.

  • 해당 notion 깃허브, 피그마 등 초대받을 수 있는 이메일과 간단한 개인 정보 작성
  • 간단한 API 명세서 설계 및 작성
  • 코드 컨벤션
  • 프로젝트 폴더링

💜 API 설계 및 명세서 작성

기획, 디자인, 클라이언트 파트가 모여 이미 작성한 프로젝트 기획 및 컨텐츠가 포함된 노션이 만들어져 있었다. 서버 파트 쪽은 뒤에 참여하여 전체적으로 훑어보고 필요한 API를 설계하고 명세서를 작성해서 업로드 하는 것이 과제였다.

팀의 프로젝트 주제는 ZEPETO 였는데, 사실 처음에 서버 둘 다 제페토가 뭐지..? 하면서 찾아보니까 메타버스 같은 그런 주제였다 (ㅇㅅㅇ) ㅋㅋㅋㅋ 잘 몰라도 노션에 필요한 view 등이 잘 정리되어 있어서 서버끼리 먼저 필요한 API가 무엇이 나올 지 의논해보았다.

[GET] 메인 조회 API
[POST] 피드 업로드 API
[GET] 피드 랜덤 조회 API

과제여서 거창한 프로젝트는 아니었기 때문에, 위의 3개 API 정도만 필요한 듯 보였다. 각 하나씩 GET, POST API는 구현해야 했기 때문에, GET API는 하나씩 들고 가고 POST API는 같은 API로 각각 구현했다.

사전 과제로 간단하게 명세서를 작성하고, 당일 합동 세미나에서 클라이언트와 간단한 커뮤니케이션을 통해 필요한 API를 좀 더 구체화 시킨 후 API 명세서를 마무리 지었다.

https://www.notion.so/q-bit/API-097f07f1569a46f9b79cbb495bdbb542
🖕 API 명세서를 작성한 노션 페이지

핵심 기능만 구현하는 과제였기에 기본적인 200과 500 HTTP Method를 포함하였다. 솝커톤, 앱잼 등과 같은 본격적인 프로젝트에 들어가면 다양한 예외처리가 필요할 것이다.

👩‍💻 API를 구현하는 사람만 이해하는 것이 아니고, API를 사용하는 사람도 명확하게 이해할 수 있는 명세서가 필요했기 때문에 꽤 구체적으로 작성할 필요가 있었다. 클라이언트 입장에서 이해할 수 있을지 생각해보고 Http Method부터 API 구성, 설명까지 전체적으로 고려하여 작성하는 것을 배울 수 있었다.



💜 Code Convention (코드 컨벤션)

서버끼리 협동하기 위해서, 코드 컨벤션을 미리 정해둬야 한다. 일종의 개발 툴과 룰을 정해둠으로써 협동 과정의 의사소통을 원활하게 하도록 하는 것이다.

코드 컨벤션을 정해보는 것은 처음이었다. 그래서 이때까지 개발한 경험을 얘기하고 다른 서버 사람이 사용했거나 보통 사용하는 컨벤션 틀을 들으면서 서버끼리 사용할 코드 컨벤션을 정했다.

  • commit message : [TYPE] 코드 설명
  • branch : [TYPE]/#[ISSUE NUMBER]
  • variable & function name : Camel Case, 동사+명사, 약어 금지
  • Chore : 주석 형식, 괄호 및 띄어쓰기 사용 방식

크게 위의 틀을 시작으로 코드 컨벤션을 정했다.

https://github.com/THE-SOPT-Joint-Seminar-ZEPETO/ZEPETO-Server/blob/main/README.md
🖕 코드 컨벤션이 포함된 깃허브 리드미


👩‍💻 협동 과정에서 코드 컨벤션을 정한 후 개발을 하니까 커뮤니케이션적으로 훨씬 수월했다. 이제까지 협동 과정에서 특별히 코드 컨벤션을 잡지 않고 프로젝트를 진행했었는데 왜 개발 과정 중 뭔가 복잡한지 깨달았고, 제대로 협력 방법을 배워볼 수 있었다. 또한 브런치를 형식에 맞게 생성함으로써 pull request하여 협동 중 git이 꼬이지 않게 방지하는 것도 배울 수 있었다.



💜 Project Foldering (프로젝트 폴더링)

개발 진행 전, 기본 프로젝트(init) 틀을 정하여 github main에 push 해두었다.

  • config: port, DB, AWS S3 등 접근 통로 관련 파일들 관리
  • controllers: 컨트롤러 파일들 관리
  • interfaces: 인터페이스 파일들 관리
  • loaders: DB 연결 파일 관리
  • models: Collection 관련 파일 관리
  • modules: 에러 메세지 등 필요한 모듈 관련 파일 관리
  • routes: 라우터 관련 파일 관리
  • services: 서비스 관련 파일 관리

👩‍💻 필요한 파일을 생성할 때마다 폴더를 막 생성하는 것이 아닌, 미리 필요한 폴더가 무엇인지 생각해놓고 init으로 생성해놓을 때 후에 개발 과정이 더 수월해지는 것을 깨달았다.



💜 ZEPETO Github

https://github.com/THE-SOPT-Joint-Seminar-ZEPETO



👩‍💻 Feeling

혼자 개발 공부만 해봤었는데 본격적으로 협동 과정을 배울 수 있어서 개발에 한발짝 다가간 느낌이었고, 또 팀 내에서 커뮤니케이션하는 것이 너무너무 재밌었다 😊

profile
쏘's 코딩·개발 일기장

0개의 댓글