자바스크립트를 활성화 해주세요

1인 개발로 서비스 런칭하며...

1인 개발 : 뜻밖의 여정

 ·  ☕ 4 min read

들어가며


   3년 넘게 다니던 회사를 그만두게 되고, 타이밍 좋게? 지인소개로 새로 런칭하는 서비스(재능기부 플랫폼)의 백엔드 개발에 참여하게 되었다. 레거시 없이 내가 원하는 백엔드 인프라를 구성할수 있다는 점과 초기멤버로 서비스 런칭한다는 점이 끌렸고, 새로운 도전을 하고싶어 입사하게 되었다. 입사당시 팀원은 대표, CTO, 나 세명이었고 추가적으로 백엔드 팀원 두명의 TO와 프론트엔드 외주가 예정되어 있었다. 입사당시 서비스 기획이 어느정도 마무리 되는 시점이여서, 첫 한달은 비즈니스를 이해하고 인프라 및 API 설계하는데 주력하였다. 그렇게 어느정도 개발 윤곽이 나오고 ‘이제 달리기만 하면 된다’ 생각했다. 하지만 살면서 계획대로 되는일이 얼마나 있겠는가… 뭐 많은일들이 있었지만 결론적으로는 마크업과 앱 배포만 외주로 지원받고 나머지는 혼자 개발하기로 결정하였다. 기대반 두려움반 이렇게 1인개발 여정이 시작되었다.

험난한 여정


   백엔드 구성은 어느정도 CTO님과 얘기하며 어느정도 윤곽이 나왔다. MSA로 구성하였으며 terraform을 이용하여 AWS EKS로 구축하기로 했다. 물론 처음시작하는 제품에 오버 엔지니어링이 아닐까 생각했지만, 추후 스케일링 뿐만아니라 자동화 파이프라인을 구축하여 개발에 집중하기 좋을거라 생각했다. DDD(Domain Driven Design) 방법론을 이용하여 개발해야할 모듈이 4개로 정했으며, 원래는 JAVA Spring으로 진행하고 싶었지만 짧은기간(약 6개월)에 프론트엔드 개발도 동시에 진행해야 했기에 익숙한 Python Django로 진행하고 다른 작은모듈은 Python fastapi나 Node express를 사용하였다. 백엔드 파트는 그래도 경험했던 분야라 일정도 어느정도 예상할수 있었고 진행에 큰 무리가 없을거라 생각했다.

   문제는 프론트엔드… 간단하게는 그냥 fullstack Framework를 사용하면 된다.(Django면 Template이나 Jinja) 하지만 예전에 경험해봤을때, 규모가 커지면 개발이 너무 복잡해져 힘들었다. 그래서 이번에는 React를 사용하여 한번 개발해보기로 결정하였다. React 경험이 없어, 처음에는 러닝커브가 어느정도 있을거라 예상했지만 어느정도 익숙해지면 오히려 속도가 더 나올것이라 예상했다. 이렇게 1인 개발 여정이 시작되었다.

Tech Stack

인프라 : AWS, IaC(terraform), CI/CD(github action, argocd), Docker, k8s
백엔드 : Python(django), Node + Typescript(express)
프론트엔드 : React + Typescript

실제 구성

구성한 인프라:

   좀 더 자세한 구성은 위 그림과 같이 하였다. 프론트엔드 부분 구성과 배포는 AWS amplify로 구축하였다. AWS cognito(인증)와 같이 기타 AWS 서비스 연결과 자동배포, 호스팅등 간단하게 풀스택 세팅할 수 있기 때문이다. (백엔드의 경우는 amplify를 사용하지 않았다.) 인증의 경우 위에 적었듯이 AWS cognito를 사용하였으며 Frontend에서 각 API에 접근하기 위해 AWS ALB path routing을 세팅하였다.

결과물


   3월부터 팀에 참가해서 4월부터 본격적으로 개발을 시작하였다. 결론적으로는 9월 중순에 (총 6개월 정도 소요)해서 요구한 기능들을 모두 개발하여 내부테스트까지 진행하였다. 개발한 내용은 프론트엔드 + 4개의 백엔드 모듈(비즈니스 로직 관련 API, SNS 인증 관련 API, 기타 알림이나 주소관련 API, 채팅 API)이다. 하지만 회사 사정으로 앱 출시까지는 하지 못하고 프로젝트를 종료하게 되었다. (너무 아쉬운 상황이 되어버렸다.)

로그인 화면
데모: 로그인 화면

홈 화면
데모: 홈 화면

채팅 화면
데모: 채팅 화면

느낀점


   좋았던 점은 일단 혼자서 내가 원하는 인프라 구축부터 프론트엔드, 백엔드 개발까지 혼자 경험해본 것이 매우 귀중한 경험이었다고 생각한다. 실제 인증은 어떤 Flow로 진행되는지, 프론트엔드와 백엔드 사이에서 데이터를 주고받을때 어떻게 해야 효율적인지? 여러가지를 고민을 해볼 수 있는 시간이었다. 그리고 초기 인프라 및 CI/CD 자동화를 세팅하였기 때문에 그 뒤로는 개발에만 집중할 수 있었다. 물론 프론트엔드 React로 개발하면서 많은 난관이 있었지만 어느정도 틀을 만들고나니 개발에 속도가 붙어서 빠르게 작업할 수 있었다.

   아쉬웠던 점은 아무래도 코드 퀄리티에 많은 신경을 쓰기 힘들다는 점이다. 혼자서 많은 양을 정해진 일정 안에 개발해야 하기 때문에 점점 마음에 들지 않는 코딩을 하게 되었다. 그리고 내부에서 조언을 구하거나 도움을 받을 팀원이 없다는 점이었다. 정신없이 코딩하게 되면 어느 순간에 삽질의 순간에 빠지게 되는데, 이때 해결되지 않으면 멘붕의 순간에 빠진다. 지나고 보면 별것도 아닌데 그 순간에 누군가 같이 고민해줬다면 훨씬 빠른시간 안에 해결할 수 있었을 것이라 생각한다. 같이 성장할 수 있는 팀원이 옆에 있다는게 얼마나 소중한 경험인지 다시 한번 깨닫게 되었다.

   약 7개월간의 1인 개발여정을 짧은글로 정리하면서 스스로에 대한 뿌듯함이 들기도 하고, 많이 힘들었던 기억도 지나가는 것 같다. 이번 경험이 좋은 밑거름이 되길 바라며 이만…

ps. 스타트업이면 AWS activate 신청하세요. (기본 1,000$에 설문조사도 하면 추가로 300$ 지원받을수있음)


shin alli
글쓴이
shin alli
Backend 개발자 (Python, Django, AWS)