[기업협업] 협업 2달간의 회고

ShinJuYong·2022년 7월 12일
1

기업협업

목록 보기
8/8
post-thumbnail

들어가며

🔎 부트캠프에서의 2달동안 기업협업을 회고하는 글입니다

어떻게 시작 했는가?

부트캠프에서 원래 2달이후, 1달간 팀프로젝트를 진행하는데
이번 기수에 한해, 2달간의 기업협업을 할수있는 기회를 주길래 엄청 좋은기회라 생각해 신청하게됐다.

어떻게 진행이 됐는가

2달간의 목표는 온라인 강의사이트를 만드는것이였다
팀원들은 모두 경력자도 아니였고, 갓 부트캠프를 수료한 코린이인 만큼 각자 기간에 맞춰서 최대한 작업을 진행하자고 했다

하지만 안 하고 놀아도 된다는 그런 얘기는 아니라 할 수 있는 만큼 열심히 했다

가장 큰 틀인 Git의 관리는 GitHub Flow방식을 사용했다

내가 속해있던 백앤드 파트는 2명이였기에 서로 기능을 ERD에서 분리해서 작업을해 최대한 충돌을 방지했다.

오전 9시에 스크럼회의를 통해서 서로 어느부분을 맡고, 진행중인지 확인을했고 오후 6시25분에 데일리 리뷰를 통해서 오늘 작업분을 확인했다
Branch에서 작업이 끝나면 해당 Branch의 PR은 다음날 오전 10시30분에 진행이 됐고 리뷰할게 없다면 바로 머지가 됐으나, 코드가 별로거나 보충이 필요했다면 기업의 담당자분이 리뷰를 남겨주셨다


Task

나는 크게 기능으로 나눈다면 강좌API와 캐싱, 결제부분을 맡아서 진행했다.

강좌API

강좌 API같은 경우에는 유저는 구매만 가능하고 Create,Update가 불가능한 구조이기에 어드민페이지에서 많은 작업을 진행했다

  • 어드민이 강좌에 강의를 추가한다면 해당 유저가 강좌를 수강중인경우 강의가 자동으로 추가 될 수 있도록 Trigger 구조를 만듦
  • 선착순 할인 기능이있어 구매를 할때마다 선착순이 떨어져 선착순이 0 이되면 할인이 없는것처럼 보이는 로직을 만듦
  • 강좌리뷰같은 경우에는 리뷰가 남겨지면 해당 강좌의 별점과 리뷰를 남긴 사람의 수가 올라가야하는데 이또한 위의 Trigger구조를 사용함.

캐싱

사이트 구조상 검색이 정말 많았고, 로그인 기능도 있엇는데 이부분에서 캐싱을 적용해서 성능최적화를 하려했다

  • 모든 검색에서 Cache-a-side패턴을 적용해서 똑같은 검색을 할경우 TTL을 2초로 적용해서 최대한 MySQL의 서버 부하를 줄이려 했음
  • 로그인 같은 경우에는 JWT토큰을 활용해 로그아웃시 Redis에 넣어 똑같은 토큰으로 요청을 보낼수 없도록 방지함.

결제

결제는 iamport api를 사용해 만들었으며 트랜잭션을 적용했다
모든 결제에대한 행동은 테이블에 Log가 남도록 구조를 만들었다

  • 강좌결제시 강좌-유저-유저가 수강중인 강좌 이렇게 여러 테이블에서 row가 만들어지기때문에 한개라도 실패하면 데이터가 오염된다, 그래서 트랜잭션을 추가했다.
  • 결제시에도 테이블에 로그가 남으며, 환불신청, 환불신청 취소, 환불완료 모든 유저의 행동에 Log가 남도록 로직을 완성했다.

마치며

Nest.js로 팀프로젝트가 아닌 실제로 기업에 사용할 프로덕트를 개발할 수 있는 좋은 기회엿다

좋았던 점

  1. 실제 기업에서 사용할 프로덕트를 아침,저녁으로 소통하고 기업의 사수분들과도 협력하며 만들수 있엇던 좋은 경험
  2. 부트캠프에서 공부한걸 더 응용할 수 있도록 사수분들이 도와준것
  3. 주마다 내 코드를 다시 볼때 더 발전할점이 보인다는게 정말 좋았다, 매일매일 성장하는 느낌이 너무 행복했다
  4. 주마다 최대한 새로운걸 공부해서 적용해보려고했다
    a. sentry를 이용한 log확인
    b. Trigger를 이용한 효율적인 로직 구조 만들기
    c. redis를 적용한 cache-a-side패턴 만들기
    등등.. 여러 새로운 기술을 직접 적용해보고 피드백을 받았엇다.

배운 점

  1. 타입스크립트

    Nest.js가 TypeScript기반인 만큼 좀 더 효율적으로 사용할 수 있는부분을 많이 공부한거같다.

  2. 다양한 새로운 기술

    부트캠프에서 공부할땐 배우지못했던 GraphQL Subscriber라던지 Scalar타입지정등 새로운 기술을 공부하여 직접 적용해봤다.

  3. 협업

    문서화를 통해 서로 어떤부분을 진행중인지, 얼마만큼 했는지 명확하게 알 수 있엇고 작업에만 몰두 할수있엇다.

정리

아직 많이 부족해서 해보고 싶은 기능들을 미처 구현하지 못한 것도 있엇고 (Logging이라던지)
한 기능을 빨리 끝내지못해 며칠씩 한기능에만 몰두한적도 있엇다 협업을 하면서 정말로 실력이 계속 늘었다는걸 느꼇고 사수분들한테도 많은 조언도 들었다.

마지막까지 조언을 해주신 사수분들한테 가장 큰 감사의 말씀을 드리고싶다

그리고 기업협업이 끝나면서 트리플 사전과제를 진행했는데 진행하면서 내가 진짜 많이 발전했구나를 느낄수 있엇다

0개의 댓글