본문 바로가기
Web Development/MicroService Architecture

[MSA] Microservice Architecture 구축에 들어가며,

by 감자맹고우 2023. 4. 18.
728x90
반응형

[ Prologue ]

풀스택 개발자로 취업했지만,

게임 개발로 프로그래밍을 처음 접했던 나로서는, 기능 구현 위주의 코드를 작성하고 나면 항상 2% 부족한 기분이 들었다. C++ 교육과 정보처리기사 취득 과정에서 익힌 객체 지향, 재사용성과 유지보수성이라는 개념이 항상 마음 한 켠에 남았기 때문이다.

 

부족한 프로젝트 일정은, 구현 위주의 하드 코딩을 유도했고, 나중으로 미루자며 리팩토링을 방해했다.

그럼에도 코드를 최대한 다듬어보자며, 메소드를 생성하고 클래스를 나누었지만 한계가 있었다. 운이 없었던 것인지 개발자 대부분 그런 것인지는 모르겠지만, 이를 같이 생각해보고 배울 수 있는 사람도 최근까지는 만날 수 없었다.

 

숙명이라 생각하고 혼자 개발 공부를 시작했는데, 다행히도 최근 몇 년간 양질의 인터넷 강의가 많이 나와서 많은 생각과 배움을 얻을 수 있었다.

어느 정도 궤도에 다다른 후에는, 강의에서 배운 것을 사내 프로젝트에 하나씩 적용해보며 체득했다. 그 과정에서 Spring Boot 의 코드를 레거시 환경에 적용하려다 보니 많은 에러를 맞닥뜨려 단순히 강의를 듣는 것보다 심화하여 익힐 수 있었다.

그러다보니 1년 전에도 그랬지만, 또 다시 1년 전의 내가 작성한 코드와 현재의 내가 작성한 코드는 많은 차이가 난다.

 

그 덕인지 최근에는 내 코드를 알아봐 주는 팀원이 생겼고, 그 덕분에 팀 자체에도 REST API 규칙을 적용하자, 최소한의 개발 규칙을 생각해보자며 분위기가 형성되었다.

프로젝트도 재기획에 들어간 상태라, 그동안 팀 내에서 사용할 수 있는 업무 일정 관리 시스템을 만들어보자라는 의견이 있어서 이 참에 모놀리틱이 아닌 MSA로 만들어보기로 했다.

 

그래서 레거시 환경에서만 개발하던 팀을 스프링부트 환경으로 이끌어내고, 나아가서 Spring Cloud를 활용해 MSA를 구축하며 경험하고 배운 내용을 앞으로 이 카테고리에서 다루어보려고 한다.

 

주요 환경으로는 레거시 환경의 팀이기 때문에, IntelliJ가 아닌 Eclipse로 IDE를 선택했고, 최신버전인 Spring Boot 3, Java 17을 사용한다.

현재까지 구축하며 사용한 기술스택 전체 목록은 다음과 같다.

Spring Boot 3, Java 17, PostgreSQL, Docker/Docker-compose, Jenkins, Eclipse, Gitea, JPA, Spring Cloud, Spring Security, Spring AOP, Swagger, JSP, thymeleaf 등

(구현하다보니 계속 필요한 것들이 생겨서 어디까지 나아갈지 모르겠다 ㅋㅋㅋ)

 

웹개발도 개발의 한 종류인데 개발 공통 이슈를 생각하지 않을리 없다. 절차지향에 가까운 기능 구현 위주의 개발만으로 이루어져 있지는 않다는 것이다.

MSA는 장애 단절과 극복이 중요한 이슈지만, 나에게는 인프라를 객체 지향처럼 구성해 놓은 것으로 느껴졌고, 이는 JPA를 처음 접했을 때처럼 신선한 충격을 선사했고 부족했던 마음을 채워주었으며, 배움에 대한 조급함도 달래주었다.

 

글을 마치며 아직은 JPA도, MSA도 실무 경험이 부족해 배움이 얕지만 팀 프로젝트에나마 적용해보며 지식을 보다 채워넣을 수 있게 되어 행운이라고 생각한다.

 

728x90
반응형

댓글