저는 레이라 주식회사에서 메인 백엔드 개발 업무를 담당하였습니다.
▶기술 스택 : Node.js+Typescript+mongodb
▶인원 : 백엔드 개발은 혼자 진행하였습니다.
▶경험 했던 부분 :
- jest를 통한 api 테스트 코드 작성 (구현 했던 api 테스트)
- aws를 활용한 배포
- 배포 시 발생한 에러에 대해서 확인을 위해 sentry + slack사용
- ci/cd 구축( github actions와 도커 허브를 통해 aws ec2에 ssh 접속하여 배포하는 방식)
- 프론트와의 협업으로는 slack + swagger + postman 사용
- 프로젝트 형상관리는 github flow 전략을 사용+ slack을 통해 프로젝트를 진행
- 인력중개 플랫폼에 대한 기능 개발 + 결제 프로세스 + 어드민 api 기능등을 개발
▶기억에 남았던 부분 :
- 결제 프로세스를 개발할 당시 처음이였고, 사용자들의 실제 돈이 오고가고 하는 부분이다 보니 정말 중요한 기능이라고 생각하였으며, 반드시 오류는 없어야 한다는 책임감이 있었기에, db설계를
우선적으로 생각하였습니다. 결제에서 있어지는 데이터들을 어디서부터 얼마나 저장해야 할지에 대한 부분들을 고민하고 설계하여, 실제 사비를 들여 토스뱅크에 재직중인 분께 과외 요청을 하여 피드백을 받았습니다. 그 후 진행된 결괴에 따라 결제 로직, 트랜잭션 처리등을 구현하여 결제프로세스를 마무리 지었던 경험이 있습니다.
- mongo db의 장점은 데이터를 정해진 틀에 따라 저장하는 것이 아닌 유연하게 저장하는 부분이라고 생각했습니다. 그런데 한명의 유저에 대해 결제 데이터나, 리뷰 데이터 등을 그냥 한번에 다 저장해버리면 너무 많은 데이터들이 쌓일 수도 있다는 생각이 들었습니다. 그래서 데이터들이 많이 쌓이지 않는 부분에 대해서는 임베디드 방식을, 결제나 리뷰와 같이 데이터들이 많이 쌓이면 결국엔 용량이 차서 분리해야 하기에, 이 부분에 대해서는 레퍼런싱 방식을 사용해 db설계를 하였고, 그에 따른 join에 대한 성능부담도 생각했으나, 내가 조회해야 할 데이터들을 select해주고 limit을 걸어 데이터의 갯수를 제한해주며, 또 페이징 시에는 no offset 방식을 사용하여 성능을 개선했던 경험이 있습니다.
- 테스트코드의 중요성 이였습니다. 개발을 하다가 postman으로 테스트를 하며 빠르게 개발을 진행해 나갔었는데, 추후 검증되지 않은 코드가 배포환경에 배포되는 것을 막기 위해 테스트 코드를 작성했었습니다. 분명 개발 당시엔 postman으로 오류없이 되었던 부분이 있었는데, 테스트 코드를 통해 에러를 확인 후 문제점을 발견했던 상황이 여러번 있었습니다. 이로 인해 테스트 코드 작성에 대한 필요성을 느꼈던 것이 기억에 남았습니다.
더보기