- 하나의 큰 어플리케이션(Monolithic)을 여러개의 작은 어플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍쳐
- SpringCloud vs Kubernetes Cloud는 모두 마이크로서비스를 개발하고 실행하기에 가장 좋은 환경이라고 주장하지만, 둘 다 본질적으로 매우 다르고 다른 문제를 해결합니다. 각 플랫폼이 마이크로서비스 기반 아키텍처(MSA)를 제공하는 데 어떻게 도움이 되는지, 어떤 분야에서 능숙한지, 그리고 마이크로서비스 이해와 기술스택을 이해하는 구성으로 작성하였습니다.
https://developers.redhat.com/blog/2016/12/09/spring-cloud-for-microservices-compared-to-kubernetes
https://martinfowler.com/articles/microservices.html
a definition of this new architectural term
The term “Microservice Architecture” has sprung up over the last few years to describe a particular way of designing software applications as suites of independently deployable services.
While there is no precise definition of this architectural style, there are certain common characteristics around organization around business capability, automated deployment, intelligence in the endpoints, and decentralized control of languages and data. (비즈니스 역량을 중심으로 자동화된 배포, 엔드포인트의 인텔리전스, 언어 및 데이터의 분산 제어)
- 배경
IT 서비스 시스템이 복잡하고, 대형화에 따라 MSA가 등장했고, 분리된 서비스 각각을 도커 기반으로 이미지화해서 배포 관리하게 되었다. 그리고 기업에서는 MSA 기반으로 분리된 각 서비스 단위로 '작은 팀'이 구성되기 시작했으며 각 팀에서는 개발부터 아키텍처, 인프라, 유지보수 등 일련의 라이프사이클을 한 번에 관리하는 구조로 조직되었다. 이러한 흐름에서 DevOps가 설명될 수 있는데, 각 DevOps 팀이 각 서비스를 관리하게 된다면 서비스 단위로 빠르게 요구사항 대응이 가능해진다. 이후, DevOps의 발달 과정 중에 SRE 컨셉이 도출되었다. DevOps 문화 속에서 안정적인 사이트 운영이 목적이라면 SRE를 도입해 서비스의 운영 측면에서 '자동화'까지 고려한 고도화된 구조로 확장될 수 있다.DevOps는 개발과 운영이라는 전체 프로세스를 아우르는 용어이고 그 안에 SRE, 애자일, CI/CD, 커뮤니케이션 등과 같은 속성들이 존재하는 구조이다.이렇듯 MSA, Docker, DevOps, SRE 등은 서로 유기적으로 연결되어 있다. 궁극적인 이들의 적용 목적은 디지털 전환(Digital Transformation,DT) 시대에서 기업의 핵심 경쟁력인 '요구사항 선제 대응'을 위함이라고 생각한다.
앞으로는 단순 개발 작업이나 반복적인 운영은 자동화될 것이고 전반적인 개발 및 운영 프로세스를 이해하고 개발할 수 있어야 경쟁력 있는 엔지니어가 되리라 생각한다.
- Cloud 시스템 이해 및 용어
- 클라우드 플랫폼을 위한 인프라 스트럭처 툴
Docker + Kubernetes : Container Management
Terraform : Cloud Provisioning
Ansible/Puppet/Chef : Management
ArgoCD/Jenkins : CI/CD - Architecture 개념도
- DevOps : 애플리케이션과 서비스를 빠른 속도로 제공할 수 있도록 조직의 역량을 향상시키는 문화 철학, 방식 및 도구의 조합
- 방식
- CI/CD : 지속적 통합과 지속적 전달 (Jekins) -> AgroCD
- MSA : Docker & Kubernetes
- Infrastructure as Code : 코드형 인프라스트럭처(Terraform)
- 모니터링 및 로깅(Prometheus) -> istio
- 커뮤니케이션 및 협업 (Git)
- 방식
- SRE (Site Reliability Engineering)
- 시스템 관리의 확장 개선, 서비스/인프라의 신뢰성 유지
- 시스템 운영관리를 담당하는 소프트웨어 엔지니어링
- 인프라스트럭처 애즈 코드와 데브옵스를 적용
- MSA
- MicroService Architecture : 독립적으로 배포 가능한 각각의 기능을 수행하는 서비스로 구성된프레임워크
- 완전히 독립적으로 배포가 가능하고, 다른 기술 스택(개발언어,데이터베이스 등)이 사용 가능한 단일 사업영역에초점
- MSA 고려사항에 대한 플랫폼 비교 & 매핑
'Tech > Public Cloud & 오픈소스' 카테고리의 다른 글
스퀴드 프록시 (Squid Proxy) 설정하기 (0) | 2024.11.29 |
---|---|
Docker 구성하기 (0) | 2024.05.31 |
AWS Data Transfer Costs (0) | 2023.09.06 |
ELK(ElasticSearch, Logstash, Kibana) ELK Stack (0) | 2022.08.08 |
클라우드 보안 가이드 (0) | 2020.12.02 |