브랜디 인턴십 회고록

BLAKE KIM·2020년 10월 22일
1

프로젝트 소개

  • 브랜디 어드민 페이지 클론 프로젝트
  • 개발기간: 2020년 9월 14일 ~ 2020년 10월 15일(약 5주. 추석이 있음)
  • 개발인원: 2 FrontEnd(박주엽, 조윤민, 한태규), 3 BackEnd(김태수, 이충희, 이지연)
  • Github

데모

https://youtu.be/Ntau8sPeA-I

사용된 기술

BackEnd

  • Python
  • Flask
  • AWS EC2, RDS, S3
  • boto3
  • MySQL
  • Git, Github
  • Bcrypt
  • JWT
  • pymysql
  • Gunicorn
  • Flask-Script
  • Crontab

내가 맡은 역할/부분

모델링

프로젝트 초기 세팅

  • Layered Architecture 사용
  • view > service > model 3단 계층 구조로 구성
  • view 디렉토리의 __init__.py 내부에서 app.add_url_rule을 사용하여 endpoint 관리
  • db connection을 view 계층에서 하도록 구현.
    • 이유는 db의 트랜잭션을 고려해야 하기 때문.
    • 이 때 커넥션 자체를 래핑해서 사용.

Order

주문 리스트 조회

  • 상태 값에 따른 주문을 resource로 보지 않고 각각의 주문을 resource로 보고 쿼리스트링을 사용하여 상태 값들을 구분하여 restful api로 구현
  • db hit를 줄이는 방식과 db hit를 한 번 더 하지만 데이터 낭비 없이 가져오는 방식 중 낭비되는 데이터가 없도록 구현. 이유는 데이터 량이 적을 때는 db hit를 줄이는 것이 효과적일지는 몰라도 서비스가 커지고 db에 담긴 데이터가 많다면 낭비되는 데이터도 많아질 것으로 생각함. 확장성을 고려하여 db hit를 한 번 더 하더라도 낭비되는 데이터가 없도록 구현함.

주문 상태 변경

  • 특정 상태로 변경할 경우는 정해지지 않고 이전의 상태 값으로 돌아가야 하는 경우가 존재. 해당 경우도 필요한 데이터 한 건만 가져오도록 구현. 데이터 낭비는 조심해야함.

주문 상세 조회

주소 변경

Event

기획전 등록

  • S3를 사용하여 기획전에 사용되는 이미지 업로드
  • 이미지 업로드 시 이미지 파일명이 중복되지 않도록 해야함.

기획전 리스트 조회

기획전 삭제

기획전 상태 변경

  • 기획전 상태는 시작날짜와 종료날짜가 존재하기에 자동으로 해당 날짜에 따른 상태가 업데이트 되어야 하기에 Crontab을 사용하여 자동으로 해당 endpoint로 요청으로 보내 해당 시각을 기준으로 상태가 업데이트되도록 구현함.
  • 처음에는 MySQL의 Event를 생성하여 구현할 계획이었으나 피드백과 여러 검색 후 결과적으로 crontab을 사용

잘한점 + 아쉬운 점 + 개선 방법

잘한 점

1차, 2차 프로젝트를 마치고 바로 인턴십을 시작했음에도 멘탈이 나가지 않았다는 점을 우선 칭찬한다. 체력적으로 앞선 프로젝트 부분에서 안배를 잘했기에 이런 결과가 있었다고 생각한다.
또한 기존의 endpoint를 개선하려 노력했다는 점이다. restful 하게 구현하라는 조건을 지키기 위한 점도 있었지만 어떤 것을 resource로 보느냐에 따라 기준이 달라지는데 여러 개로 나뉠 수도 있는 것을 하나의 endpoint로 구현하여 중복되는 코드를 최소화하였다.

아쉬운 점

보다 많은 욕심을 부리지 않았다는 점이다. 더 기능을 구현할 수 있었지만 쉬는 날에는 휴식에 좀 더 취중했다. 이는 잘했다는 생각도 들기는 하지만 돌아보니 아쉬움이 남아있기는 하다. 쉬는 날에도 보다 많은 코딩을 했다면 브랜디 프로젝트 외에 다른 프로젝트를 할 시간적 여유도 생겼을 텐데 그 점이 아쉽다.

개선 방법

운동을 시작해야겠다. 체력이 부족한 것은 사실인 듯 하다. 체력이 되지 않기에 쉬는 시간이 생각보다 길었던 것 같다. 처음은 더 힘들고 피곤할 지라도 앞으로의 개발자 생활을 위해서 운동을 꼭 시작해야 할 것 같다.

profile
BackEnd

0개의 댓글