Today I Learned
오늘은 알고리즘을 2문제를 풀고, MSA, Spring Cloud에 대하여 공부하였다.
알고리즘은 이제 처음 시작한 만큼, 쉬운 문제부터 하나씩 차근차근 풀어나갈 예정이다.
Spring Cloud를 처음 공부하는 코린이🧑💻 입장에서 신기했던 것은 넷플릭스가 Eureka, Ribbon, Hystrix, Zull 을 개발했다는 것이었다.
넷플릭스가 Spring Cloud를 개발한 이유에 대해서는 블로그 중간에서 알려주기 때문에 블로그를 끝까지 읽어줘야 한다.
[ MSA ]
MicroService Architecture의 줄임말로, 애플리케이션을 작고 독립적으로 배포 가능한 서비스로 분할하는 설계 방식이다. 하나의 애플리케이션을 여러 개의 독립적인 서비스로 분리하여 개발, 배포, 유지보수를 용이하게 하는 소프트웨어 아키텍처 스타일이며, 각 서비스는 특정 비즈니스 기능을 수행하고, 서로 독립적으로 배포되고 확장될 수 있다.
[ MSA의 장점 및 단점 ]
- 장점
- 확장성: 각 서비스는 독립적으로 확장이 가능하며, 특정 기능에 대한 성능 최적화가 용이하다.
- 유연성: 다양한 기술 스택을 사용하여 각가의 서비스별 최적화가 가능하다.
- 독립적 배포: 서비스별로 독립적 배포가 가능하여 배포 주기를 단축할 수 있다.
- 작은 팀 구성: 서비스별 작은 팀으로 구성되어 민첩한 개발이 가능하다.
- 단점
- 복잡성: 서비스 간 통신, 데이터 일관성 유지, 트랜잭션 관리 등의 복잡성이 증가
- 운영비용: 각 서비스의 모니터링, 로깅, 장애 대응 등을 개별적으로 관리해야 하므로 운영 비용이 증가
- 데이터 관리: 분산된 데이터베이스로 인해 데이터 일관성 유지가 어려울 수 있음
- 네트워크 지연: 서비스 간의 통신이 네트워크를 통해 이루어지므로 지연 시간이 발생할 수 있음
아마존과 넷플릭스에서 MSA 방식을 채택했다고 하여 무조건 MSA방식을 사용해야 하는것은 아니다.
마이크로서비스 아키텍처와 모놀리식 아키텍처는 서로 다른 특성과 장점을 갖고있기 때문에 아키텍처를 선택할 때는 프로젝트의 규모나 팀의 여건, 비즈니스 요구사항 등 여러 요인을 고려해야 한다. 즉, 비즈니스에 가장 적절한 아키텍처가 무엇인지 판단하고 적용하는 게 가장 중요하다고 할 수 있다. [ infcon-2023-tech-msa 참고 ]
[ 넷플릭스가 Spring Cloud를 개발한 이유 ]
넷플릭스가 모놀리식 아키텍처에서 클라우드 서비스와 MSA 환경으로 바꾸게 되는 흥미로운 글이 있어서 주소를 남겨본다.
https://blog.naver.com/c-platform/222693128572
2007년 넷플릭스는 DB에 심각한 장애가 발생해 3일간 DVD 배송 지연 이라는 문제를 발생하게 된다. 이 문제를 계기로 8년에 걸처 모놀리식 아키텍처 방식에서 MSA 방식으로 전환하게 되는데, 그 과정에서의 노하우와 문제 해결 방법을 오픈소스로 공개하게 되는데. 이것이 Spring Cloud Netfilx이다.
[ Spring Cloud ]
Spring Cloud는 마이크로서비스 아키텍처를 구축하고 운영하는 데 필요한 다양한 도구와 프레임워크를 제공하는 Spring Framework의 확장이다. Spring Cloud는 분산 시스템 개발을 단순화하고, 구성 관리, 서비스 등록 및 디스커버리, 로드 밸런싱, 서킷 브레이커 등의 주요 기능을 제공한다.
- 주요 기능
- 서비스 등록 및 디스커버리: Eureka, Consul, Zookeeper
- 로드 밸런싱: Ribbon, Spring Cloud LoadBalancer
- 서킷 브레이커: Hystrix, Resilience4j
- API 게이트웨이: Zuul, Spring Cloud Gateway
- 구성 관리: Spring Cloud Config
- 분산 추적: Spring Cloud Sleuth, Zipkin
- 메시징: Spring Cloud Stream
MicroService Architecture, Spring Cloud에 대하여 처음 접하게 됐는데, 모놀리식 아키텍처만 사용하던 나에게 MSA는 매우 흥미롭고 새로운 미지의 세계처럼 느껴졌다. 스프링을 공부하고 배움에 있어서 한 층 더 성장하고 깊이 있는 단계에 들어선 느낌이다.
읽어 주셔서 감사합니다 😊
'해피 코딩 > Today I Learned' 카테고리의 다른 글
[TIL 6] 컴퓨터는 죄가 없다, Redis정리 (1) | 2024.08.07 |
---|---|
[TIL5] MSA 마무리 (0) | 2024.08.06 |
[TIL 4] 보안 구성 Gateway를 통한 Security이해하기 (0) | 2024.08.05 |
[TIL 3] CircuitBreaker와 Resilience4j (0) | 2024.08.02 |
[TIL 1] 어떻게든 배포만 하면 된다!! (2) | 2024.07.31 |