ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SSAFY] 싸피 8기 2학기 특화 프로젝트 후기 - 우수상(2등)
    IT/SSAFY 2023. 4. 15. 23:06
    반응형

    특화 프로젝트 기간은 한창 공채 공고가 많이 올라오고 자소서를 작성하는 기간이다보니,

    취업과 병행하여 최대한 효율적으로 프로젝트를 진행하고자 했다.
    (사실 이번은 수상을 목표로 하지는 않았는데 결과가 좋아서 기분은 좋았던..!)

    프로젝트 개요 및 결과

    - 서비스명 : Gotcha!

    - 서비스 개요 : 사진 1장으로 만드는 AI 게임 서비스

    - 프로젝트 기간 : 23.02.27 - 23.04.07(6주)

    - 프로젝트 인원 : 6명 (백엔드 3명, 프론트엔드 3명)

    - 결과 : 우수상(반 2등) 수상

    아이디어 기획

    우리가 선택한 도메인은 '인공지능(영상)'이었다.

    팀 내에 머신러닝을 해 본 친구도 있었고, 네이버 AI tech 수료생도 있어서 인공지능을 선택했다.

    첫 주에 아이디어를 내는게 저어엉말 어려웠다.

    취업도 병행해야하다보니 너무 볼륨이 큰 프로젝트를 하긴 부담스러웠고,

    팀원 모두 적당한 선에서 볼륨은 크지 않지만 의미 있는 프로젝트를 진행하고 싶다는 생각이었다.

    그렇게 "보물찾기 AI" 키워드가 등장했는데, 어떻게하면 실용성을 붙일 수 있을까 생각하다 나온 것이 팝업스토어.

    팝업스토어에서는 다양한 "찾아보세요"류의 게임을 많이 진행하는데,
    이를 스태프에게 인증하고 스탬프를 받아 모아서 최종적으로 경품을 받는 것이 굉장히 번거롭다고 생각해왔다.

    이에 기업이 팝업스토어를 운영할 때 사용할 수 있는 게임 서비스를 만들자고 의견을 모았다.

    또한, 게임뿐만 아니라 기업마다 커스텀된 고유한 게임페이지도 제작할 수 있도록 기능을 제공해주기로 했다.

    개발

    이번에는 백엔드와 인프라를 맡아서 진행했다.

    처음 API명세서와 ERD를 작성했을 때 굉장히 소박..해서 이래도 되나 싶을 정도였는데
    역시.. 개발을 진행하다보니 계속 추가해야할 것들이 발생해서 막바지에는 팀원들 모두가 달라붙어서 개발을 진행했다.

    각 진행한 내용에 대한 자세한 얘기들은 별도의 포스팅으로 작성할 예정으로 느낀점만 간략하게 적도록 하겠다.

    CI/CD

    이번엔 배포를 해보겠다! 라는 생각으로 인프라를 내가 직접 담당해서 진행했다.

    공통 때 여기저기서 받은 포팅매뉴얼로 쉽게 구축할 수 있을 것이라는 착각도 잠시..

    정말 계속해서 터지는 에러들로 아주 어지러운 한 주를 보냈다..^^

    그래도 인프라를 해봤던 다른 팀원의 도움을 종종 받아가며 완성해내서 너무나 뿌듯했던 경험!

    또한 생소했던 터미널 사용이라던가 ubuntu 운영체제의 명령어들이라던가..파이프라인 스크립트를 직접 작성해본 것,

    젠킨스, 도커, 엔진엑스가 어떠한 원리로 작동되는지에 대해 이해할 수 있어 좋았다.

    테스트코드 작성

    사실 이전 프로젝트에서도 유닛테스트와 통합테스트 코드를 작성했었는데,

    서비스 레이어의 유닛테스트를 완전히 엉망진창으로 짰다는 것을 깨달았다.

    가령, 서비스 레이어의 유닛테스트를 한다고 하면 Repository와 Controller 등과의 연관성을 끊고

    순수 서비스 레이어에서의 테스트를 진행했어야 했는데 지난번 프로젝트에서는 Repository까지 갔다오는 테스트를 했었다..(^^;)

    사실상 통합테스트나 다름이 없던....

    이번에는 레이어 간의 연결관계를 끊고 MockMvc를 통해서 유닛테스트와 통합테스트를 진행했다.

    그래도 아직 제대로 작성한 것은 아니어서 자율 프로젝트에서는 책을 한 번 읽고 진행해보려고 한다.

    GA

    이번엔 GA를 도입해보자고 제안을 했다.
    아무래도 마케팅 툴로 사용할 서비스인만큼, GA를 붙여야만 한다고 생각했다.
    사실 마케터로 일할 때 GA를 직접 사용해본 적은 없었다. (퍼포먼스 마케터는 별도로 있으니까..)

    FE팀원이 GA를 붙이고 처음 서비스를 완성한 후 주변 지인들에게 링크를 뿌려 게임을 풀어보게 했다.

    생각보다 많은 인원이 게임을 다 풀지 않고 나가는 것을 사용자 흐름도를 통해 직접 확인할 수 있었고,
    게임 시작 이전에 튜토리얼을 붙여야겠다는 인사이트를 얻을 수 있었다.

    Logging

    로그도 한 번 붙여보았는데, 사실 복붙 수준으로 붙여넣어본 것이라 완전히 내 것으로 파악했다고는 할 수 없을 것 같다.

    이번에는 어떤 요청에서 쿼리가 몇 번 실행됐는지를 기록하는 로그를 붙여 보았는데,
    API 연결 이슈라던지 서버에 오류가 발생했을 때 로그가 구분되어 있어 이슈 파악이 더 편리했다.

    AOP의 개념이라던가, 좀 더 작동원리에 대해 파악해보는 것이 필요할 것 같다.

    발표

    다른 팀원들이 구현한 Auto-scaling, AI 모델 등 여러 기술적 포인트들이 있어서
    좋은 평가를 받아 본선에 또 올라갈 수 있었다.

    아쉬운 점은 서비스 자체의 볼륨이나 기능이 크지는 않았어서 기술력 대비 보여줄 페이지가 많지는 않았다.

    하지만 취업 준비와 병행하며 진행해야했기 때문에 후회는 하지 않는다..!

    아쉬웠던 점

    1. 기술을 T자로 깊게 파보지 못한 것

    매번 취업 설명회 등을 들으면 T자형으로 깊게 무언가를 파본 개발자를 좋아한다고 하는데,
    나는 사실 매번 새롭다보니 깊게 파고들 생각까지 못했었다.
    일단 한 번은 다 훑어야 하니까..? 특화에서 인프라 등 이것저것 하고나니 어느정도 한 번 훑었다고 생각한다.
    자율에서는 좀 더 하나의 기술을 파보았으면 하는데 특히 DB 튜닝이나 Batch 등 좀 더 다양한 기술들을 접해보고 싶다.

    2. 너무 지저분한 Git Flow

    이번에 Git Flow가 너무너무 지저분했다.

    지라랑 연동한 브랜치를 판 팀원도 있어서 전체적으로 브랜치 네임도 통일되지 않았고,
    중간중간 피쳐 브랜치에서 바로 마스터에 머지했다가 이를 수정하는 과정에서 디벨롭 브랜치를 리셋해버리는등..아주 난리가 났었다.

    Git을 적당히 아는채로 프로젝트를 하다보니 이렇게 된 것 같다.

    좀 명확하게 정리를 얘도 한 번 해야할 것 같다.

    3.Dockerfile 충돌

    백엔드단의 무중단 CI/CD만 내가 작업하고, 프론트와 파이썬서버의 배포와 Auto-scaling은 다른 팀원이 진행했었다.

    각각의 브랜치에서 배포를 하다보니 개발기간은 문제가 없었는데,

    이를 마스터로 머지하는 과정에서 빌드가 갑자기 모두 되지 않는 상황이 발생했다..!

    심지어 해당 팀원은 취업 퇴소로 없는 상황이었고, 발표가 2일 남은 상황에서 해당 문제가 발견되었다.

    우선은 나는 발표 준비도 해야 하다보니 겹치는 Dockerfile을 각 브랜치에서 다 삭제해버리고 빌드를 다시하여
    일단은 서비스가 굴러가게만 해놨는데... 이걸 이제 고쳐야 한다..!

    반응형

    댓글

Designed by Tistory.