마로의 개발일지
Vertical-api 개발 회고 본문
2021년에 비전공자로 SSAFY를 수료하고 내가 가진 지식은 아주 하찮기 그지없었다. 복수전공인 전자전기 공학에서 컴퓨터 구조와 운영체제 입문을 들었지만 기억조차 나지 않았고, 졸업 전에 잠시 끄적였던 딥러닝 지식은 너무 보잘것없어 꺼내보기도 민망했다. SSAFY에서 배운 Django, Vue.js는 기초적인 프로젝트 수행에 필요한 정도만 알고 있었고, 그나마 딥러닝과 코테를 준비하면서 공부한 Python 문법만이 그나마 좀 더 나은 상황이었다.
입사할 당시엔 백엔드 개발자로 풀스택 개발 업무를 하는 팀에 들어갔었다. Node.js와 React를 사용해서 웹 개발을 하는 팀이었다. 한 달 동안 방치되며 사용하는 기술 스택들에 대한 부족한 지식들을 채우기 위해 노력했지만 역시나 역부족이였고, 대략적인 느낌들만 파악한 채 첫 번째 프로젝트를 맡아 시작하게 되었다.
개발 내용
처음에 주어진 일은 앱에서 메인 화면이 아닌 다른 탭에서 상품목록을 보여주는 페이지의 레이아웃 정보와 데이터를 담아 주는 api 개발이었다. Node.js와 sequelize, serverless framework를 이용해 간단한 GET 방식의 신규 api(AWS Lambda)를 만드는 것이 내가 할 일이었다. 지금 생각하면 단순히 DB에서 레이아웃 데이터를 조회 -> 검색API를 호출하고 받아온 데이터를 알맞게 가공해서 담음 -> 앱으로 전달해 주면 되는 API를 만들면 되는 거였다.
협업 쉽지 않네
SSAFY에서 프로젝트를 진행할 때 협업을 하긴 했지만 둘이서 하는 협업과 팀단위의 협업은 차원이 달랐다. 어쩌다 보니 해당 프로젝트의 개발 PM이 되어 있었고(당시엔 백엔드 개발자가 주로 한다고 했다) 아무것도 모르는 나에게 앱개발팀 분들이 질문했다. 들리는 용어들도 생소했고 말의 뉘앙스에 따라 의미를 대략적으로 파악하며 의사소통을 했다. 당시 곤란해하던 나에게 큰 도움을 준 건 입사 동기인 프론트 개발자였다. 동기와 함께 소통하며 응답 스펙과 api호출 주소를 작성했고 문서 정리도 했다. 전공자인 동기는 나보다 더 많은 지식을 가지고 있었고 내가 모르는 것들에 대해서 잘 알려주었다(지금도 감사하고 있다).
일단 해보자
당시엔 팀원 모두가 바쁜 상황이라 나와 동기를 챙겨줄 수 있는 사람이 없었다. 그래서 그냥 무작정 serveless framework 페이지로 가서 문서를 보고 유튜브를 통해 어떻게 하는 건지에 대한 강의를 들었다. 하지만 듣고 이해하며 천천히 진행하기엔 나에겐 한 달이라는 기간이 주어졌고, 그때의 나에겐 너무나 짧은 개발기간이었다. 당장 2주 안에 목업 스펙이라도 전달이 되는 api를 만들어야 하는 상황이었고, 도움 받는 걸 그리 좋아하진 않지만 어쩔 수 없이 팀원분들에게 도움을 요청했다. 팀원분들은 친절하게 하나하나 알려주었고 그 모습을 본 팀장님은 나를 강하게 키우고 싶으셨는지 너무 많이 가르쳐주지 말라고 하셨다. 사실 나도 개발은 최대한 스스로 많이 해보는 게 좋다는 생각이 있어 옆에서 지속적으로 도와주는 게 부담스러운 상황이라서 저 말이 너무 감사했다. 참고할 만한 문서와 이전에 이미 개발해 본 팀원분이 정리한 문서들이 있어 참고하면서 개발을 진행했다.
개발 쉽지 않네
역시 실제 서비스 개발은 쉽지 않았다. 여러 가지 난관들이 존재했고 각 난관들은 내 발목을 붙잡으며 작업 시간을 뺏아갔다.
- 환경설정
local 환경과 lambda 환경의 버전이 달라서 실행이 되지 않기도 하고 코드가 실행되지 않는 이유가 버전 때문인가 해서 지우고 다시 깔았다가 되던 것도 안 돼서 하루동안 삽질한 적도 있었다.
- sequelize
ORM은 써봤지만(django ORM) 간단한 쿼리들이었고, 조금만 복잡해도 구현하려면 많은 노력이 들었다. 하루동안 열심히 찾아 헤맨 뒤 조회 로직 하나를 구현하는 날도 있었다.
- vpc, 서브넷 보안설정
다른 내부 api를 호출하는 부분이 있었는데 당연히 될 줄 알았던 항목이 실행이 되지 않았을 때 도저히 이유를 알 수 없었고 절망에 빠졌었다. 정말 모르겠어서 질문을 했고 VPC와 서브넷 보안설정이 잘못되어 있었다. 이때 방화벽과 네트워크에 대해서 좀 더 공부해야겠다고 생각했었다. 생각해 보니 지금도 네트워크에 대한 공부는 조금 했지만 방화벽이나 vpc, 서브넷 보안설정에 대해서는 잘 모르는 것 같다. 나중에 시간이 된다면 블로그에 정리해야겠다.
- 신규 DB
기존에 항목들은 mariaDB를 사용해서 개발했었는데, 새로 생성한 AuroraDB에 신규 DB schema를 생성하고 테이블을 추가했기에 기존의 DB 연결 설정을 사용할 수 없었다. 개발 환경 백오피스의 애너테이션 설정을 잘 못 설정해 롤백을 한 적도 있었다. 지금 생각하면 정말 별거 아닌 일이었지만 그땐 정말 죄송했었던 기억이 난다.
TimeOver
좀 더 잘하고 싶어서, 기한안에 끝내고 싶어서 늦게까지 야근도 하며 개발했지만 결국 목표기간보다 이틀정도 더 소요되었다. 실제 운영배포일 기준으로 작업한 게 아니라서 별 문제는 없었지만, 기간 내에 해내지 못했다는 생각이 들어 아쉬웠고 좀 더 열심히 해야겠다고 생각했다. 간단한 API이기 때문에 배포 시 문제 될 부분도 딱히 없었지만, 내가 만든 첫 API가 배포된다니 너무 긴장되고 떨렸다. 에러가 터지진 않을까 노심초사하며 앱 업데이트는 언제지? 하고 불안해하고 있었는데 나도 모르는 사이 이미 끝나있었다. 모르고 지나갔다는 건 다행히 에러가 나오지 않았다는 뜻이지만, 다음에도 이럴 순 없기에 이후로는 매번 배포 이후에 모니터링을 열심히 진행하고 있다.
후기
첫 프로젝트부터 기한을 넘기는 하찮은 신입이 된 것 같았다.
- 물론 아무도 나에게 기대를 하지 않았을 것이다. 하지만 완벽주의 성향이 있는 나는 참을 수 없었고 더 잘해지기 위해 노력했다. 오히려 자만하지 않고 더 많은 노력을 할 수 있게 되어 좋았던 것 같다.
백엔드 개발을 하는데 인프라 지식이 꽤나 많이 필요하다고 느꼈다.
- vpc, 서브넷, ec2, cloud front 등등 모르는 단어가 너무 많았고 코드 레벨에서 해결할 수 없는 문제들이 종종 나올 때마다 더 절실히 느꼈던 것 같다. 물론 아직도 절실한 느끼고 있다. 이것저것 주워듣다 보니 전보다 나은 수준이지만 기회가 된다면 인프라 구성도 해보고 싶다.
시간이 부족해 모두 제대로 파악하고 쓰지 못해서 아쉬웠다.
- 완벽주의 성향이 있다 보니 쓸 거면 제대로 이해하고 쓰자는 생각이 있다. 하지만 마지막으로 갈수록 시간에 쫓기다 보니 검색해서 방법만을 찾고 적용한 뒤 이해하지 않은 채 넘어갔었다. 물론 능력이 부족해 어쩔 수 없었지만 아쉬운 마음이 들었다. 지금은 일단 개발하고 나중에 원리를 찾아보면 좀 더 이해가 잘 된다는 사실을 알고 있다. 개발하면서 나중에 더 자세히 알아보고 싶은 것들을 메모해 두고 시간이 있을 때 종종 찾아보고 있다. 이제부턴 찾아본 내용들을 블로그에 정리하면 좀 더 좋지 않을까
프로젝트는 협업이다.
- 나의 일정도 중요하지만 다른 사람들의 일정도 중요하다. 온전히 개발만 집중해서 하면 되는 게 아니고, 서로 간의 커뮤니케이션을 통해 필요에 따라 수정 보완해 가며 프로젝트를 진행해야 한다는 것을 깨달았다. 커뮤니케이션의 방법에는 여러 가지가 있지만 난 직접 자리로 가 대화를 하는 것을 선호한다. 글로 표현하지 못하는 표정과 어조 등을 알 수 있고 상대방과 좀 더 친해질 수 있기 때문이다. 종종 그렇게 친해진 사람들과 업무 얘기를 하다 일상 얘기를 주고받는 것을 통해 소소한 즐거움을 느끼고 있다.
'기록' 카테고리의 다른 글
앱 메인 개편 회고 - 마무리(관심 카테고리) (0) | 2023.04.02 |
---|---|
앱 메인 개편 회고 - 2(퀵메뉴) (0) | 2023.03.26 |
앱 메인 개편 회고 - 1 (0) | 2023.03.25 |
2021년 회고 (0) | 2023.03.24 |
정리하고 기록하기 (0) | 2023.03.19 |