Monolithic Architecture란?
하나의 서비스 또는 애플리케이션이 하나의 거대한 아키텍처를 가질 때 이를 모놀리식 아키텍처라고 한다.
Monolithic Architecture 장점
개발이 간단하다.
-> IDE 등 개발 툴은 단일 애플리케이션 구축에 초점이 맞추어져 있다.
애플리케이션을 쉽게 변경할 수 있다.
->코드,DB 스키마를 변경해 빌드/배포하기 용이하다.
테스트하기 쉽다.
->개발자가 애플리케이션을 띄우고,REST API를 호출하고, 셀레늄으로 UI를 시험하는 종단 간 테스트를 작성한다.
배포하기 쉽다.
->개발자는 서버에 접속하여 톰캣 설치 경로에 WAR파일을 복하면 된다.
확장하기 쉽다.
->부하 분산기 뒷면에 애플리케이션 인스턴스를 여러개 실행한다.
Monolithic Architecture 단점
- 조그마한 수정사항이 있어도 전체를 다시 빌드하고 배포해야 함
- 유지보수가 힘듦
- 프로젝트 규모가 커질수록 구동 시간이 늘어남
- 일부분의 오류가 전체에 영향을 미침
- 각 기능별로 알맞은 언어나 프레임워크를 선택하기가 까다롭습니다.
Microservices Architecture란?
하나의 큰 애플리케이션을 여러 개의 작은 애플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍처를 말한다.
Microservices Architecture 장점
단일 책임의 원칙
->각 서비스는 하나의 책임만 갖는다.
독립적인 배포
->각 서비스 간 의존성을 최소화하며, 서비스 간 통신은 각 서비스별 API를 참조한다.
느슨한 결합
->각 서비스 간 의존성을 최소화하며, 서비스 간 통신은 각 서비스별 API를 참조한다.
높은 유지성, 테스트 가능성
->분리된 서비스별 관리 및 유지하기 편하고 테스트도 독립적으로 가능하다.
팀 단위 구성이 가능
->서비스 단위로 팀 구성을 하여 개발/운영 할 수 있다.
사업 단위(서비스 단위)의 조직
->각 서비스의 단위를 사업의 단위로 판단할 수 있다.
Microservices Architecture 단점
모니터링 및 테스트가 힘들다.
End-to-End 서비스 구동이 불편하다.
서비스 간 호출 시 API를 사용하기 때문에 통신 비용이나 Latency가 그만큼 증가한다.
-------------------------------------------------------------------------------------------------------------------
Two Pizza Team이란?
-목적형 조직이다.
예)롤을 할때 탑,미드,정글,원딜,서폿을 목적형 / 미드만 5명있는 것을 기능형이라고한다.
-한 팀이 마이크로서비스 앱의 기능을 모두 수행할 수 있는 인력을 보유하고 있는 '롤(LoL)' 느낌이다.
골든이미지란?
골든 이미지는 OS 영역을 포함해 필수 패키지가 설치된 일종의 표준 이미지 개념이다. 공통 부분을 미리(패키징) 해둠으로써 인스턴스 프로비저닝 시간을 최소화하고, 새 이미지로 부터 새로운 객체들을 생성하기 때문에 보안 관점에서도 여러가지 이점이 있습니다.
골든이미지의 필요성
각 회사에는 표준 솔루션들이 존재한다.
-대표적으로 보안 솔루션 등이 여기에 해당
이는 클라우드 전에도 잇었던 형식이며, 클라우드에서도 이를 활용한다.
클라우드에는 Machine Image(ex : AWS의 경우, AMI)와 연계할 수 있는 형태로 활용한다.
멀티클라우드 환경으로 확장하기 위해서 이를 지원하는 솔루션들이 존재하며 대표적으로 Packer가 존재한다.
-추가적으로 널리 활용되는 스크립팅 기술로 Ansible등이 존재한다.
골든이미지 문제점
-주기적인 이미지를 다시 만들어야하는 번거로움 예시로, 설치된 패키지 중 특정 버전에 취약점이 발견 시 해당 패키지가 업데이트된 이미지를 다시 만들어줘야한다.
-더큰 문제는 이미지를 생성한 이후의 작업들도 덩달아 공수를 유발한다는 것 또한 부담이다.
Packer란?
Packer는 Hashicorp사에서 제공하는 오픈소스 도구이다. 이를 이용하여 사용자는 멀티 클라우드 플랫폼에서 동일한 머신 이미지(서버 이미지) 생성을 자동화할 수 있다.
->"골든 이미지"를 만들기 위한 자동화 도구
개별 클라우드 이미지를 관리할 경우
-변경 사항이 있을 때 마다 매번 이미지를 생성해야한다.
-언제 사용할지 모르는 서버 이미지 보관에 따른 비용이 발생한다.
-보관 중인 이미지에 대한 세부 설정 확인이 어렵다.
->운영,관리상 부담
Packer를 사용하면 어떨까?
-템플릿을 이용해서 필요로 따라 다양한 클라우드 플랫폼의 서버 이미지 생성 가능하다.
-VM 생성, ACG설정, 소프트웨어 설치 등 단계별 수작업이 필요한 기존 방법에 비해 템플릿을 통한 손쉬운 이미지생성이 가능하다.
-이미지 디스크립션 파일을 통해 이미지에 대한 세부 설정 확인이 가능하다.
-변경 사항이 있을 때 템플릿을 수정 및 보관하고 필요할 때 이미지 생성 진행하면 되므로 불필요한 이미지 보관에 따르 비용 발생이 없다.
-HCL을 사용, Terraform과 손쉬운 연동이 가능하다.
->운영,관리 차원에서 유리함
Packer의 핵심기능에 대해서 알아보자!
1.Builder
-다양한 클라우드 및 온프미엄 인프라에대한 이미지 생성을 담당.
->깡통 OS 생성
2.Provisioner
-기본 제공 소프트웨어 및 타사 소프트웨어를 사용, 이미지를 설치하고 구성할 수 있도록 시스템을 준비.
ex)타입지정 : Shell, PowerShell등
3.Post-Processor(옵션단계)
-이미지를 만든 후 실행.
아티팩트를 업로드하거나 다시 패키지.
4.Data Source
-구성에 사용하기 위해 외부 데이터 사용.
Init- 플로그인 다운로드
Fmt- 페커에 지정된 방식으로 여백처리 자동으로 해줌
Vaildate- 코드검증해줌 문법상
Build- 이미지를 만드는 행위
'AWS' 카테고리의 다른 글
[개념] HashiCorp Vault란? (0) | 2023.12.22 |
---|---|
[AWS] 2일차 이론내용 정리 -2 (0) | 2023.12.12 |
AWS JAM 실습후기 (0) | 2023.12.09 |
4) cloud9실행부터 slack 챗봇 연결까지 +실수했던 부분 (0) | 2023.09.22 |
3)slack으로 챗봇만들기 -앱세팅(엄청쉬운설명) (1) | 2023.09.19 |