source: https://pixabay.com/ko/photos/%EC%97%AC%EC%84%B1-%EC%83%89%EC%A2%85%EC%9D%B4-%EC%A1%B0%EA%B0%81-%EB%B0%98%EC%A7%9D%EC%9E%84-6318447/

협업 방식

(함께 개발한 경험이 있는) 두 명이 진행하는 작은 프로젝트여서 중간에 변화가 생겼을 경우 원활한 공유가 가능하지만,

킥오프 미팅을 포함한 개발 초기 단계에 원거리에서 프로젝트 진행 예정이어서 기본적인 부분은 협의를 이루어두고 진행하기로 했습니다.

  • 취합 일정을 공통으로 정해두고, 그 전까지 마무리해야하는 부분은 각자 맞춰서 끝내는 방식
    • 코드 관리: GitHub
    • 팀 일정 관리: Slack
    • 협업 문서 관리: Swagger
  • git 관련 추가 내용
    • issue를 생성하고 관련 commit에 tag하면서 관리
    • commit 메시지 한 줄로 표현할 수 있는 작은 단위의 commit size 유지
  • 공통 목표: 일일 사용 유저 30명의 서비스
  • 개인 목표: 포트폴리오 용 프로젝트, git 활용 연습, Python 웹 개발 및 프레임워크(Flask, Django) 연습, 클라우드 배포

 

기술 스택

제가 담당하는 백엔드는 하기와 같은 스택으로 진행하기로 했습니다.

  • 언어: Python
  • 프레임워크: Flask (과제 제출 이후 Django로 리팩토링 목표!)
  • 웹서버: Nginx
  • DB: PostgreSQL, Redis
  • 실시간 통신: web socket

 

환경 구성

  • 서버 구성 방식
    • Docker container 사용 - Backend, Frontend, DB, Server(Nginx)를 각각의 컨테이너로 구동
    • Nginx를 프록시 방식으로 구동 (Nginx 컨테이너만 외부에 노출되도록 진행)
  • 레포 구성 방식
    • 메인 레포에서 서브모듈로 백엔드, 프론트엔드, env, docker파일 레포 연결
    • env, docker파일 레포의 경우 private 레포로 생성해 외부에 코드 유출되지 않도록 진행
    • 브랜치 방식을 사용하지 않고 다른 레포로 관리하기 때문에 브랜치/commit 간 충돌이 나지 않는 장점이 있음

 

앞으로 진행 내용

Python으로 함수와 클래스까지는 만들어봤지만 웹은 처음이어서, 그리고 Flask도 처음이어서 일단 그 공부를 해야겠습니다.

그리고 Docker 컨테이너를 올려야겠죠!

프론트 컨테이너까지는 아니더라도 백엔드 컨테이너(python-flask-uWSGI)와 DB(postgreSQL), 서버(Nginx) 컨테이너를 docker-compose 파일을 통해 한 번에 올리고 nginx를 통해 flask로 연결이 되는 것까지 진행을 해 볼 예정입니다.

Swagger를 어떻게 이식할 수 있는지, Jenkins를 통한 CI/CD는 가능할지, 서비스를 위해 DB 스키마는 어떻게 구성할지도 찾아보고 고민해봐야겠습니다.

+ Recent posts