안녕하세요 여러분!
김송아입니다.
지난 시간 백엔드 서비스를 쪼개는 일을 해봤죠!!
다들 빌드에 대해선 좀 더 공부해보셨나요!?ㅎㅎ (아직 질문은 따로 없으셔서, 필요하시면 언제든!)
그럼 바로~ 이어서 가봅니다!
지난 아티클에서 확인했듯이 (아래 링크 참고)
의존하는 서비스의 객체는 사용이 가능하지만, 컨트롤러는 사용이 불가합니다!
즉, 서로 통신을 할 때에는 컨트롤러가 아니라 다른 무언가를 이용해야 한다는 뜻입니다🔥
🤔 Q. 그럼 다른 서비스에게 필요한 일을 요청하기 위해서는,, 어떻게 해야할까요?
- 외부에서 들어오는 요청은 게이트웨이가 하면 되고,
- 내부 모듈 간 통신은 메세지 브로커를 사용할 수 있습니다!
(ps. 메세지 브로커는 다음 아티클 이야기~~)
뭐.. 게이트웨인지 메세지 브로커인지 통신을 하려면 일단
각 모듈(서비스)의 정보(IP, Port)를 알아야할 것 같은데,, 대체.. 어떻게 알고 보내야 할까요?🙉
1. 수동?
가능은 합니다. 하지만 만약 수정된다면, 전부 수동으로 업데이트 해야 할 것....
같은데 괜찮으시겠어요...?
MSA는 사실상 Scale-Out의 장점이 큰 데, 매번 수동으로 업데이트한다는 건 조~금 목적에 안 맞는 것 같죠?
💡여기서 잠깐!
Scale-Out 이란? 서버를 추가하여 시스템을 확장하는 것을 말합니다.
비슷한 용어로 Scale-Up : 기존 서버 사양을 업그레이드 하는 뜻을 가지는 용어도 있어요!
2. 자동 (책임 지우기ㅎㅎㅎㅎ)
그래서 자동 방법이 있습니다!
Service Registry를 만드는 방법이에요!
서비스의 주소록(Service Registry)을 만들어 서비스의 위치를 저장 및 관리를 전담시키는 겁니다.
✔️ 외부에서 오는 요청에 따른 서비스의 주소가 필요할 때!
✔️ 내부 서비스 간 통신에서 다른 서비스의 주소가 필요할 때!
모두 Service Registry에게 물어보고, 원하는 정보를 얻어 해결할 수 있을 겁니다!
💡Registry(레지스트리)란?
쉽게 말해서 각종 설정 값과 정보를 담고 있는 데이터베이스입니다.
넓은 의미로 정리해보면, 소프트웨어들에 대한 정보와 설정 값을 들고 있는 일종의 주소록(데이터베이스)이라고 보면 할 수 있겠네요!
Registry를 적용하는 방법은 크게 2가지가 있습니다.
1️⃣ Server-Side Discovery
: Load Balancer(추상화)를 Service Registry(구현체) 앞단에 세우고
우리는 Load Balancer랑 얘기하는 겁니다!
즉, Load Balancer가 Service Registry 에게 대신 질의해주고, 통신도 해주는 거에요!
2️⃣ Client-Side Discovery
: Service Registry 구현체를 직접 사용하는 겁니다!
: 대표 구현체(라이브러리)로는 스프링의 Spring Cloud Netflix Eureka 를 들 수 있습니다!
여러분들은 둘 중 어떤 방법을 선택하실 것 같나요?
만약 선택하셨다면 그 이유는 무엇인가요?
분명 모든 선택에는 이유가 분명해야겠죠!
그 이유는 그 방법의 장/단점이 될 수도 있을 거구요🙈
선택하셨다면 그 이유와 함께 댓글을 남겨주세요!!
-
그럼, 축축한 장마 기간에 기대하지 못한 날씨를 만날때 그 기쁨으로!
주말 잘 보내시길 바랍니다😊
감사합니다.
김송아 드림
'Web' 카테고리의 다른 글
[언그래머] 아흔다섯번째 아티클_Spring boot MSA 설계 (7) 메세지 브로커 (1) | 2024.07.26 |
---|---|
[언그래머] 코딩테스트 챌린지_15_연탄의 크기 (by 소프티어) (1) | 2024.07.09 |
[언그래머] 쉰여섯번째 아티클_데이터 무결성 검증에 실패하였습니다. (24) | 2024.01.02 |
[언그래머] 쉰다섯번째 아티클_우리는 진짜 애자일을 하고 있는 걸까? (26) | 2023.12.29 |
[언그래머] 쉰네번째 아티클_CI/CD 2탄_CD 개념이 하나가 아니라고..? (15) | 2023.12.26 |