* GS Neotek AWS 강의를 바탕으로 작성한 포스트입니다.
클라우드 컴퓨팅
컴퓨팅 및 IT 자원을 언제 어디서나 필요할 때마다 요청, 최소한의 관리 노력으로 신속하게 이용할 수 있는 기술
클라우드 서비스 종류
- SaaS (Software as a Service)
- PaaS (Platform as a Service)
- IaaS (Infrastructure as a Service)
AWS 모범사례
#1. AWS 모범 사례 : 장애(Failure)를 감안한 디자인
클라우드 환경에서는 설계시, 장애를 겪을 수 있다는 점을 감안해야한다.
그러므로 설계를 굉장히 보수적으로 진행하고 이를 복구할 수 있는 시스템으로 디자인한다.
Example.
만약 2개의 애플리케이션 서버가 하나의 DB서버에 연결돼있을 때 DB에 장애가 일어날 경우
2개의 애플리케이션 서버 모두 문제가 발생한다.
이를 보완하기 위해 DB 서버를 이중화하여 메인서버에 장애가 일어날 경우, 바로 서브 서버로
연결될 수 있는 구조로 시스템을 디자인해야한다.
#2. AWS 모범 사례 : 소결합(Loosely Coupling) 적용
서비스의 규모가 커질수록, 웹서버와 애플리케이션 서버간의 연결 복잡도가 증가한다. (Tightly Coupled)
이럴 경우, 트래픽이 몰리게 되고 서버 간의 일 수행 속도가 상대적으로 느려진다.
이를 해결하기 위해, LB(Load Balancer)를 사용한다.
LB에 대한 정보는 이전 블로그를 참고한다. (https://for-if.tistory.com/5)
백엔드 엔지니어링이란?
** 한국항공대학교 [카카오엔터테인먼트 개발자가 알려주는 백엔드 프로그래밍 특강] 을 참고하여 작성한 post입니다. 백엔드 엔지니어링이란 ? 특강을 듣기 전까지 내가 알고 있던 백엔드 엔지
for-if.tistory.com
밀결합된 아키텍처를 LB를 활용해 소결합 구조로 변경한다.
각 계층 사이에 LB를 두어 통신의 일관화를 구성하여 복잡도를 낮춘다.
#3. AWS 모범 사례 : 탄력성(Elasticity) 구성
앞서 LB를 AWS에서는 ELB 즉, (Elastic Load Balancing)이라고 한다.
클라우드는 높은 탄력성으로 EC2 인스턴스로 가기 전에 트래픽을 효율적으로 분산한다.
여러 인스턴스 및 가용영역에서 트래픽을 자동으로 라우팅하여, 애플리케이션의 내결함성을 높이는 것이 특징이다.
Auto Scaling
애플리케이션을 모니터링하고 EC2 용량을 자동으로 확장 및 축소하는 서비스
이를 통해 애플리케이션의 비용 및 성능을 유지한다.
- 모든 레이어에서 Auto Scaling방법과 ELB를 통해 규모 조정을 신속하게 설정한다.
- 자동으로 성능을 유지하면서 필요한 만큼만의 금액을 지불한다.
#4. AWS 모범 사례 : 모든 레이어에서 보안을 고려
애플리케이션의 DNS부터 백업까지 각 모든 레이어에 보안을 고려한다.
이때 생성해놓은 보안 그룹은 연결된 리소스에 도달하고 나갈 수 있는 트래픽을 제어한다.
#5. AWS 모범 사례 : 제약(Constraints)에서 벗어남
IOPS (Input/Output Operations Per Second)
HDD, SSD, SAN과 같은 컴퓨터 저장 장치를 벤치마크 하는 데 사용되는 성능 측정 단위
** AWS는 기본적으로 문제가 발생할 경우, 이를 해결할 수 있도록 디자인 설계함
#6. AWS 모범 사례 : 병렬적(Parallel)으로 생각
1대의 서버가 4시간동안 순차적으로 수행하는 것보다
4대의 서버가 1시간동안 병렬적으로 수행하는 것이 시간복잡도 면에서 더 효율적이다.
#7. AWS 모범 사례 : 다양한 스토리지 옵션을 활용
'BACKEND' 카테고리의 다른 글
Symbolic Link, Hard Link 란 ? (2) | 2024.07.02 |
---|