티스토리 뷰
23년 12월부터 시작한 항해 플러스 3기. 10주간의 여정이 모두 마무리되었다. 10주동안 정말 많은 일이 있었지만 조금 간단하게...? 회고해보려 한다. 🤣
> 항해 플러스를 시작하기 전, 어떻게 시작했는지? 에 대한 내용은 이전 글에서 확인!
1주차: 남이 타준 커피가 젤 맛있다.
AWS 환경에 CI/CD 자동화 구축... 그동안 개인적으로 CI/CD 및 클라우드 환경에 대해 공부를 했었지만, 실무에서는 이미 만들어진 환경에서 개발만 진행하는 경우가 많아서 였을까... 과정을 하나하나 진행하는게 쉽지 않았다.
우선 Github Action을 통한 배포 자체가 처음이라 브랜치, 환경에 대한 전략을 어떻게 가져가는 것이 좋을지 많은 고민이 되었다. 일반적으로 회사에서 local, dev, stg, prd 환경을 만드니까 비슷하게 해봐야겠다 생각은 했고 개인 프로젝트라 local, dev 환경만 분리하는 것으로 마무리를 했다. 또 진행을 하면서 테스트-빌드만 필요한 경우와 배포까지 필요한 경우를 적절히 나눠 주는 것도 필요하다는 것을 알게 되었다. 가이드를 제공해주셔서 처음에는 많이 어려웠지만 그래도 어찌저찌 분리가 가능했다.
이후 클라우드 환경에 배포를 진행하면서도 많은 이슈가 있었다. 아무 생각 없이 ECS 서비스 생성 시 Public IP를 넣어줘야 하나 고민을 하다 뺐더니... ECR에서 이미지를 가져오거나 하는 등의 인터넷 통신이 필요한 부분이 전혀 실행되지 않았고 이 에러를 해결하는데도 시간이 한참이 걸렸다... 해결 방안은 Public IP 지정을 하거나 NAT 게이트웨이를 추가해 외부 통신이 가능하게 만들어주는 방법이 있었다... 또한, AWS 비용은 어떻게 할지 최소한의 비용을 서비스를 띄우는 방법은 뭐가 있을지 고민이 많았다. 비용을 아끼려고 별도 RDS 등을 사용하는 대신 ECS 서비스 생성 시 연관된 도커 컨테이너를 같이 띄우는 방법을 고민했는데... 멘토링을 통해 방법을 제안 받았지만 아직 시도는 못해보았다 ㅠㅠ
이렇게 비용을 아끼려는 노력을 했음에도... ECS를 띄워두고 계속 두었더니 10만원 가까운 비용이 발생했다... 부랴부랴 블로그 글들을 검색하면서 환불 받을 수 있을 방안들을 찾았고 서비스 센터에 메일을 보내는 등의 방식으로 돈을 돌려 받을 수 있었다... 그러다보니 조금 더 쉽게 환경을 구축하고 없앨 수 있는 방안들을 고민하게 되었고 Terraform 적용을 검토중이다...! (사실... 전부터 공부해야지 했지만 아직도 안하고 있다니... 하...🤦♀️)
2,3,4주차: 어서와, TDD는 처음이지?
2주차부터는 3가지 주제 중 1개를 정해 TDD 방식으로 API를 구현하는 것이었다. 같은 주제로 팀원들과 각자 개인 프로젝트를 진행하다보니 내 속도에 맞춰 진행하면서도 각자 고민하는 내용을 공유하고 같이 해결할 수 있어서 좋았다.
나는 이커머스 관련된 주제를 선정하였고 API 5개? 정도를 구현하는 프로젝트였다. 사실 API 구현은 그동안 업무로 많이 해오던 일이라 크게 어렵지 않겠다 생각했는데... 오산이었다. 너무 당연하게 생각해오던 Layered Architecture 를 처음부터 도메인 구분으로 나누고 TDD 방식으로 기능을 구현하는 것은 여간 어려운 일이 아니었다...ㅠㅠ 평소 개발 시 service layer에 너무 많은 책임을 주고 있다고 생각해 도메인을 중심으로 기능을 잘 나눠보고자 했는데 처음 이렇게 하는거라 쉽지 않았다. 또한 TDD 방식은 생각보다 더 어려웠다. 기능을 만들지 않고 먼저 테스트를 짜면서 그때 그때 필요한 것들을 만들어 나가 테스트를 성공시키는 방식은 익숙하지 않아서인지 개발 속도를 너무 늦췄다...😭
그래도 3주동안 꾸준히 연습하고 멘토링하다보니 배우는 것들이 정말 많았다. 기본에 충실할 것!!! 이것이 첫번째다. 어떤 기능을 구현하기 위해 여러가지 방안이 있겠지만 최소한의 자원으로 기능을 구현해보고 거기서 안되면 다른 방안을 고민해야지 먼저부터 너무 다양한 방안을 시도하려고 하면 탈난다...ㅎㅎ 그리고 테스트의 중요성과 테스트를 짜면서 점점 기능 구현을 해나가는 방식은 매우 중요하고 나중에도 해당 기능을 이해하는데 많은 도움이 된다는 것을 알게 되었다. 테스트를 짜면서 더 좋은 코드란, 더 테스트 짜기 용이한 클래스란 무엇인지 고민하고 수정을 할 수 있어 좋았다. 또한, 도메인을 적절하게 잘 분리하고 각 도메인의 관계를 잘 이해하고 공유하는 것도 매우 중요하다는 것을 알게 되었다.
여기에서 배운 내용들을 계속 연습하고 실무에서도 적용해보기 위한 연습을 꾸준히 해야겠다고 생각했다. 같이 일하는 동료들과 공유할 수 있으면 더 좋을 것 같다고 느꼈다.
5,6,7주차: 당신의 서버, 안전합니까?
5주차부터는 로깅, 모니터링 그리고 장애 대응에 대한 내용을 배우게 되었다. 로그를 남기는 것이 항상 중요하고 이것을 모니터링하는 다양한 방법이 있는데 항해에서는 CloudWatch 를 통해 로그를 보고 에러 로그의 경우 슬랙으로 알림을 보내는 방식을 배울 수 있었다. 그리고 부하 테스트가 무엇인지, 어떤 식의 시나리오를 짤 수 있는지도 배우게 되었다.
이때는 파트 하나하나를 집중 분석하면서 해보지는 못했는데 꼭 알고 있어야 하고 연차가 쌓일수록 더 많이 필요한 부분이라고 생각했다. 코치님께서 멘토링 시간에 현업에서 어떻게 하고 계신지에 대한 내용들을 공유 주셔서 많은 도움이 되었다. 이 부분은 다시 한번 혼자 해보고 직접 만든 API를 대상으로 다양한 테스트를 진행하면서 로그를 보고 에러를 빨리 탐지하는 환경을 만들어보면 좋을 것 같다고 생각했다...!! (사실 이때 AWS 비용이 갑자기 나가서 부랴부랴 리소스 정리하느라 제대로 된 실습을 하지 못했던 것 같다...🥲)
8,9,10주차: 오픈소스? 나도 할 수 있다!
8주차부터는 팀 단위로 오픈소스 개발을 진행하게 되었다. 오픈 소스는 이름만 들었을 때 뭔가 유니콘처럼 너무 멀게 느껴졌다. 그동안 제공해주는 많은 오픈 소스들을 감사하게 쓰고 있었기 때문에 큰 불편함을 느끼지 않았고 '뭐가 있으면 좋겠다...' 해도 내가 못 찾아서 적용을 못하나보다 생각하곤 했다. 그래서 주제를 정하는 부분이 가장 어려웠던 것 같다.
결론적으로 우리 팀은 인텔리제이 플러그인을 개발했다. (아이디어 주신 헌우 코치님 감사합니당 😊) 평소에 깊게 생각하지 않았는데 스프링부트에서 관리해주는 dependencies의 경우 버전을 명시하지 않아도 된다고 알려준 뒤, 사용자가 확인하면 명시된 버전을 제거해주는 플러그인이다. (깃헙 참고해주세요 😉)
Plugin 개발은 처음이라서 패키지 구조 및 어떤 식의 기능을 구현하고 테스트를 짜야할지 조금 막막한 부분도 있었지만, 전체 기능을 적어보고 순서대로 구현하면서 팀원들과 공유하고 멘토링도 받고 하면서 구조를 잡아갈 수 있었다. 또한, 어떤 방식이 더 좋을지 고민하면서 계속 소스를 수정하고 같이 논의하는 과정도 도움이 많이 되었다. 다른 사람의 생각을 듣고 기능을 발전시키는 일은 어렵지만 뿌듯하다. 역시 개발은 소통을 하는 시간이 중요하다는 것을 다시 느낄 수 있었고 누군가의 불편함을 해결하고 도움을 주는 오픈 소스를 제작한다는 점에서 의미있는 시간이었다.
또한, 오픈 소스에 기여하는 방법도 알게 되었다. 이번에는 단순한 문서 수정이었지만 평소 사용하던 오픈 소스에서 불편한 점이나 이슈들을 찾고 해결 방안을 고민하고 소통하는 방법을 알게 되었다. 해당 오픈 소스에서 제공하는 가이드에 맞게 Issue와 PR을 생성해서 올리고 소통하면 된다. 이런 과정은 평소 멀게만 느껴지고 어렵게 여겨졌는데 한번 해보니 접근은 쉬울 수 있고 같이 소통해서 만들어나가는 뿌듯함을 경험할 수 있어서 좋았다. 앞으로 더 자주 시도해보면 좋겠다고 생각했다.
결과물
소감 정리 및 앞으로 하고 싶은 것
10주동안 정말 많은 일이 있었다. 시작 전 10주는 누구나 집중할 수 있고 나도 할 수 있는 짧은 코스라고 생각했는데 막상 진행하고 나니 생각보다 길었고 그 사이 많은 일들이 있어서 집중하기 힘든 하루들이었다. 그래도 10주간의 여정은 정말 의미있고 좋았다. 다양한 개발자들과 같이 고민하고 문제를 해결해가는 과정은 넓은 시야를 가질 수 있게 해주었고 좋은 동료들을 얻을 수 있게 해주었다. 또한, 코치님들의 진심이 가득 담긴 멘토링을 받으면서 현업에서 어떤 것을 중요시 하고 어떤 부분을 더 고민하고 계신지 들을 수 있어서 소중한 시간이었다. 앞으로도 배운 내용을 바탕으로 꾸준히 성장하며 동료들과 함께 서비스를 발전시키는 개발자가 되어야겠다. 😉
Keep
- 매일 개발하기
- 항해 플러스를 하면서 1일 1커밋을 실천해보았다. 매일 개인 프로젝트를 고민하고 테스트 코드를 짜고 수정하여 기능을 만들어가는 과정은 많은 도움이 되었고 퇴근 후 공부하는 습관을 만들어 주었다.
- 테스트 코드 짜기
- 멀게만 느껴지던 TDD 방식을 배울 수 있었고 얼마나 중요한지 더 알게 되었다. 이를 통해 실무에서도 테스트 코드를 고민하며 클래스들을 수정해 나가고 안정적인 서비스를 만들어 가고 있다.
- 다른 사람 코드 보기
- 실무에서는 여러가지 이유로 코드 리뷰를 하지 못하고 있다. 하지만 항해를 통해 다양한 개발자들의 코드를 같이 보고 더 나은 방향을 고민할 수 있어서 좋았고 앞으로도 자주 다른 사람의 코드를 보면서 좋은 방향을 고민하고 내 코드에도 적용해보고 싶다.
Problom
- 인프라 구축
- 클라우드 환경을 처음부터 구축하고 전체 아키텍처를 만드는 일은 생각보다 쉽지 않았고 비용 문제도 있어서 더 고민할 것들이 많았던 것 같은데 이를 최종적으로 완벽하게 공부하고 해결하지 못해서 아쉽다.
- 업무, 도메인 분리
- 혼자 프로젝트를 할 때 처음해보는 도메인 설계를 어떻게 해야할지 고민이 많아 일을 나누고 일정을 산정하는데 어려움이 많았던 것 같다.
Try
- 코드로 인프라 구축
- 인프라 환경을 코드로 작성하여 더 쉽게 만들고 지울 수 있는 방법을 고민하면 좋을 것 같다. 또한, 클라우드 환경에 대한 이해를 높이기 위해 AWS 자격증도 공부하면 좋겠다고 생각했다.
- BoostAPI 개발
- 간단한 프로젝트 기본 구조를 제공할 수 있는 프로젝트를 만들면 좋겠다고 생각했다. 이를 통해 다양한 방법론을 공부하면서 아키텍처 구조를 연습해보고 개인적으로 프로젝트를 진행할 때 베이스로 가져다가 사용하면 좋을 것 같다.
항해 플러스를 고민하는 분들께
항해 플러스는 다른 것보다 열정 넘치는 코치님들 덕분에 더 좋은 코스라고 생각한다. 수강생들보다 열정적으로 본인의 시간을 투자하여 밤낮없이 멘토링을 해주시고 더 좋은 방향성을 알려주시기 때문에 다른 유료 강의들보다 가성비가 좋다고 생각한다!!!!!!
점점 더 발전하는 커리큘럼을 보며 몇번이고 다시 들어도 좋은 코스라고 생각하고 개발자라면 한번쯤은 모두 겪어야하는 서비스의 전 과정을 경험할 수 있다는 점에서 많은 분들께 추천하고 싶다. 현업과 공부를 병행하는 것은 여러모로 어려운 점이 많았지만 의지를 가지고 같이 열심히 하는 동기들이 있어서 잘 버틸 수 있었던 것 같다!!!! 다양한 개발자 동료를 얻어가는 것도 덤!!!! 👍
항해 플러스를 신청하실 분들은 지인 추천 제도도 있으니 참고해주세요~~🙏
- 지원 페이지 > 유입 경로 > 지인소개 > ‘3기 OOO’
- Total
- Today
- Yesterday
- programmers
- Baekjoon
- Combination
- 소수
- Dynamic Programming
- ionic
- java
- DFS
- CodeDeploy
- 수학
- EC2
- permutation
- 조합
- string
- 프로그래머스
- array
- SWIFT
- 순열
- Algorithm
- CodePipeline
- spring
- search
- CodeCommit
- map
- AWS
- cloudfront
- ECR
- 에라토스테네스의 체
- BFS
- sort
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |