본문 바로가기

나는 리뷰어다 2023

[7월 리뷰] 마이크로서비스 아키텍처 구축

    "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

 

요즘 설계와 리팩토링에 부쩍 관심이 생겼다.

업무를 하면서 기존 시스템과 비슷하게 짜면

admin은 2일

서비스는 4일이면 만드는데

품질은 기존에 존재하는 로직으로 짜느냐고 공장 뽑듯 작성할 수 있다.

그러나 이를 리팩토링하려면 머리가 아파온다.

폴더를 어디에 만들지 부터가 고민된다.

 

최근 회사에서 한 업무가

마케팅 이메일을 내재화 하는 것이였다.

 

이메일 템플릿, 이메일 스케쥴, 이메일 스케줄 execution, log_email_message

이렇게 크게 테이블은 4개이다.

 

3일만에 빨리 만들 수 있었던 이유는, 기존에 push 알림을 하는 기능이 만들어져 있어서 굉장히 빠르게 만들었다.

그러나 copy & paste라 기능은 굴러가지만 뭔가 중복되는 코드도 많고

기존 코드가 확장성을 염두하지 않아서 멋지지 못했다.

 

그래서 리팩토링을 하고 싶었으나

1. 이미 작동 중이 코드

2. 파일 구조가 여기저기

3. 여기까지 건들여도 되나(?)라는 고민

4. 인터페이스랑 추상 클래스를 써본 적은 있지만, 자주 쓰지 않아서 어떻게 뜯어 고칠지 모르겠는

 

=> 리팩토링은 인터페이스와 추상클래스를 가지고 회사분이 큰 골자를 바꿔주셔서 

이렇게 하면 되는구나를 깨달았다.(구조 짜주시는데 일주일 걸렸다ㅠㅠ 안 친해서 언제 끝나냐고 말하기 어려웠음)

 

1. 인터페이스로 꼭 선언해야할 함수를 선언한다

2. 공통적으로 쓴다, 오버라이딩하지 않는 함수는 추상클래스에 함수로 선언해 놓는다.

3. 폴더 구조는 message > builders, service, controllers, exceptions < senders, task

 

  

과연 마이크로 설계는 어떻게 하는 것일까?

마이크로서비스가 적합 한 곳

조직에서 더 많은 개발자가 서로 방해하지 않고 동일 시스템에서 작업하기 위해서다.

 

현재 내가 다니는 곳은 우리팀만 7명

전체 개발자는 100명 가까이 되지 않을까 싶다

 

24시간 연중 무휴 작동 -> 배포하기 어려움

마이크로 서비스는 독립적 릴리스라서 이 분야에서 힘을 발휘

 

마이크로 서비스 == 유연성

 

전체적으로 읽어보니 지금 회사 서비스를 토대로 마이크로 서비스의 경험이 있다면

회사 코드와 구조가 마이크로 서비스로 설계 되어있는거 같은데? 라는 생각이 들게한다.

(테스트, 배포까지도 포함 되기 때문)

개념적인 설명은 많은데, 예시 코드가 거의 없고, 한가지 주제로 쭈욱 큰 그림을 그려줬으면 하는 아쉬움이 든다.