본문 바로가기
AWS

[AWS] 2일차 이론내용 정리 -1

by Mr Baek 2023. 12. 11.

 

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- 이미지를 만드는 행위