본문 바로가기
F-Lab 멘토링

『F-Lab』 3주차 ~ 6주차 멘토링 회고

by 세대교체 2025. 3. 29.

 

오랜만에 시간이 나서 짬 내서 회고를 작성하려 한다.

우선 그동안 무엇을 했는가 하면 아래의 이미지로 대변하려 한다.

 

치열했던 몇 주였다.

새로운 프로젝트에 합류하고 몇 주간 개발자 나름의 서열 정리가 있었고, 멘토링을 병행하면서도 실무 퍼포먼스에서 준수한 성적을 냈기에 꽤? 🤔 괜찮은 평가를 받아 안정적인 생활을 유지하고 있다.

 

 

회의할 때 디자인 패턴 이야기가 나오길래 기강을 잡았다.

 

생각보다 멘토링 진행 속도가 빠르기에 원했던 수준만큼 책을 깊게 이해하진 못했지만, 5년 뒤에도 기본기에 해당되는 개념들을 다루는 서적이기에 멘토링이 끝난 후에도 다시 정독하려 한다.

 

6주 차 멘토링을 진행한 뒤 멘토님 피드백에 따라 프로젝트 환경 구축을 먼저 진행했다. 현재 시점으로 NCP 크레디트 지원이 중단되었으므로 AWS 기반으로 인프라 환경을 구축하고 있다. 아직은 깡통 스프링 부트 프로젝트이기에 DataBase는 아직 달지 않고 Jenkins 서버, Application 서버 2대 띄워서 CI/CD 환경을 구축했다. 큰 CI/CD 구조를 잡고 난 뒤에 추가적으로 기능 및 환경을 구성하는 것은 큰 리소스가 든다고 생각하지는 않기 때문에 프로젝트를 진행하면서 점차 개선할 계획이다.

 

인프라를 개선하는 과정은 별도의 기술 아티클로 공유하겠다. 

 

대략 6번의 멘토링 동안 200개 가까이 되는 기술 질문을 받았다. 가끔은 정신이 혼미해질 때가 있는데, 나중에 기술 면접 가서 당황하지 않을 것 같다. 6주 동안 무엇이 가장 변화했는가 살펴보면 스스로 생각하는 습관이 생겼다. 협업을 하다 보면 다른 개발자의 주장을 맹목적으로 믿을 때가 종종 있는데 정말 그럴까? 하고 찾아보거나 건강한 기술적 토론을 하는 경우가 늘어났다.

 

대표적으로 객체지향 개념에 대해서 생각을 되게 많이 했다. 내가 생각하는 객체지향이란 뭘까, 내가 읽었던 책, 읽고 있는 책 모두 객체지향의 개념에 대해 이야기하는데 미묘하게 전달하는 바가 달랐다. 예전에 들었던 세미나에서 객체지향에 대해서만 1시간이 넘도록 이야기할 수 있다는 말이 떠올랐는데, 객체지향의 원칙, 패턴, 특성과 스프링 프레임워크에서 객체지향이 어떻게 적용되었는지를 논의하려면 하루도 부족할 것 같다.

 

최근에는 인프라적인 부분에도 관심이 생겨 나름 여러 아티클들을 돌아다니고 있는데, 직접 구축을 하다 보니 비용적인 이슈가 가장 크게 느껴져서 최대한 서버 비용을 절감하는 방향으로 접근하고 있다.

 

최초에는 아래와 같은 구조로 인프라를 구성하려 했다.

 

그러나 ELK를 직접 구축하기에는 시간적인 리소스가 많이 소요될 것으로 예상되고, RDB의 Master/Slave 구조는 비용적으로 이슈가 발생한다. 그래서 우선 프로젝트 초기에는 1대의 RDB만 사용하고 프로젝트 진행 여건에 따라 다르게 접근하려고 한다.

 

비용적인 이슈 때문에 EC2 서버를 하루에 3시간씩만 사용하는 식으로 대응하고 있다. 물론 고정 IP 주소와 볼륨 비용은 지속적으로 비용이 발생하고 있다. 개발에 돈을 아끼지는 않지만 절약할 수 있는 부분은 최대한 절약하고자 한다.

 

NGINX 또한 직접 EC2 서버에서 컨테이너 띄워서 다양한 설정들을 해볼까 했는데 굳이 큰 비용 들이지 않고 ELB를 사용할 수 있어서 ELB를 선택할 계획이다. 또한 Pinpoint 도입 관련해서 멘토님이 피드백을 주셔서 고민하고 있는데 사이드 프로젝트에서 나쁘지 않은 선택이라 판단되어 좀 더 고민해 보고 프로젝트 중간쯤에 도입할 예정이다.

 

굉장히 간단한 요구사항 명세서를 기반으로 API Endpoint를 작성해 보았다.

대략 31개 정도의 API를 구현해야 되고, 구현해야 되는 범위가 크지는 않지만 멘토링 과정에서 학습 다양한 객체지향적인 기법들과 테스트 코드 짜기 쉬운 구조를 고려하다 보면 꽤나 타이트한 프로젝트가 예상된다.

 

실무에서는 주로 Cloud Manage Platform, HR Platfrom 등과 같이 일반적인 서비스 기업에서 시도하는 도메인과는 거리감이 있는 프로젝트를 진행했다. 그렇기에 이번 사이드 프로젝트가 더욱 각별하게 느껴진다. 개인적인 흥미가 있는 도메인에 사용하고 싶은 기술을 선택해서 만들어보는 행위가 개발자에게 있어 가장 큰 취미가 아닐까 싶다.

 

참고로 이번에는 실무에서 사용하는 MyBatis가 아닌 JPA를 선택해서 프로젝트를 진행하려고 한다.

관계를 맺지 않고 ERD를 구성한다는 점이 어색하기는 하지만 JPA가 지닌 장점을 느껴보기 위해 시도한다.

 

음.. 일단 대충 고려해 보긴 했는데 구현하기 전에 다시 한번 구성해야겠다. 외래키를 맺지 않도록 논리적 참조만 허용하는 것이 목표인데 API 명세 쭈욱 훑어보면서 다시 설계할 예정이다. 멘토님 피드백으로는 객체지향적으로 코드를 작성하는 것이 우선이라고 했는데 데이터가 어떻게 흘러가는지 예측할 때는 ERD를 펼쳐놓고 고민하는 방법도 괜찮다고 생각한다. 둘 다 하면 더 좋지 않겠는가.

 

 

2월 초에 멘토링 시작하고 매일 학습한 내용과 다음날에 학습할 내용을 멘토님께 공유하고 있다. TIL이 효과적인 이유는 학습한 내용을 공유하기 위해 매일 학습을 하게 된다는 점인데 꽤나 강제성을 지니기 때문에 야근에 지친 마음에도 학습을 할 수 있어서 좋은 것 같다.

 

그럼 내일 7주 차 멘토링 준비를 마저 하러 가보겠다.

앞으로는 회고 포스팅은 몰아서 작성할 예정이고, 진행 중인 프로젝트 관련해서 기술적인 부분을 포스팅할 예정이다.