1. 직방이란?
- 부동산 매물 검색 서비스 운영 업체
- 부동산 매물을 찾아주는 모바일/온라인 애플리케이션
- 부동산 애플리케이션 시장에서 약 70% 정도 차지 하고 있다.
2. 당면 과제
- 고가용성 데이터 베이스 인프라 관리 필요 +ㅜ 애플리케이션 데이터 베이스 운영 유지에 지원 필요
- 사용자 수요 급증에 따라, 신속한 지원을 위해 확장성과 안정성 필요 + 속도 저하 및 서비스 중단으로 인한 경쟁사로 고객의 이동을 방지 위해 항상 고가용성 유지 필요
- 초기 앱 다운로드 증가에 따라 커지는 인프라 비용 최소화 필요
=> 핵심은 무결성!
2-1. 고가용성, 확장성, 안정성, 무결성
고가용성
: 서버와 네트워크 , 프로그램의 정보 시스템이 상당히 오랜 기간 동안 지속적으로 장애 없이 정상 운영이 가능한 성질이다. 보통 99.9% 와 같은 비율로 표현
확장성
: 서비스나 응용 프로그램이 증가하는 성능 요구에 맞게 향상될 수 있는 정도
안정성
: 필요할 때 의모한 기능을 정확하고 일관되게 수행하는 것
무결성
: 신뢰할 수 있는 서비스 제공을 위해서 의도하지 않은 요인에 의해 데이터, 소프트웨어, 시스템 등이 변경되거나 손상되지 않고 완전성, 정확성, 일관성을 유지함을 보장하는 특성.
3. 해결 방법
![](https://velog.velcdn.com/images/juyoung810/post/2500e9e6-c9db-446c-9c67-7ed9e75abc69/image.png)
3-1. S3 & RDS & Amazon SQS 사용
Amazon SQS란?
마이크로 서비스, 분산 시스템 및 서버리스 애플리케이션을 위한 완전관리형 메시지 대기열
- Amazon Simple Queue Service(SQS) 는 마이크로 서비스, 분산 시스템 및 서버리스 애플리케이션을 쉽게 분리하고 확장할 수 있도록 지원하는 완전 관리형 메시지 대기열 서비스
- 서비스 커질수록 서버 한 대로 처리 힘들다 -> 각 기능을 여러 서버에서 처리 -> 서버들끼리 주고 받는 메세지 잃어버리지 않아야 고가용성 유지 가능하다. 따라서 SQS는 서버들끼리 주고 받는 메시지 정확하게 처리
동작 방식
![](https://velog.velcdn.com/images/juyoung810/post/c3777b3f-86f5-49ea-897e-70ecff9731e4/image.png)
- 시스템에는 메시지를 대기열로 전송하는 생산자, 대기열의 메세지를 수신하는 소비자가 존재한다. 그리고 이 메세지가 들어있는 대기열은 여러 Amazon SQS 서버에 메시지를 중복 저장한다.
- 생산자가 메시지 A 를 대기열로 전송 -> A는 Amazon SQS 서버에 중복 분산 -> 소비자가 메시지 처리 준비될 경우 대기열에서 메시지 소비해 메시지 A 반환
장점
- 관리 오버헤드 제거 : SQS 대기열이 동적으로 생성되고 , 자동으로 확장되므로 애플리케이션 신속하고 효율적으로 구축 및 확장 가능
- 메시지 안정적으로 전달 : SQS를 사용해 애플리케이션 구성요소를 분리할 수 있다. 이를 통해 구성 요소가 독립적으로 실행되어 장애가 발생하여도 , 시스템이 복구되면 처리되도록 메시지를 대기열에 추가 가능. 또한 모든 메세지의 복사본 여러 개가 다중 가용 영역 전체에 중복 저장되어 필요할 때 언제든 사용 가능
- 보안 : 서버측 암호화(SSE) 통해 각 메세지 본문 암호화해 애플리케이션 간에 민감한 데이터 교환 가능 (AWS KMS)
- 탄력적이고 비용 효율적으로 확장 : SQS는 애플리케이션 상태 따라 탄력적으로 확장되어 용량 계획과 사전 프리프로비저닝에 대해 걱정할 필요 없다. 또한 메시지 대기열에서 프로세스를 분리하므로, 다른 프로세스를 추가하기만 하면 손쉽게 메시지 송신이나 수신 속도 높일 수 있다. 비용은 사량을 기준으로 부과되므로 비용 절감 제공
S3 & RDS & SQS 통한 고가용성 데이터 베이스 관리 및 운영
- S3를 통해 사용자 및 부동산 중개 사무소등의 정보를 저장하고, RDS를 이용해 관계형 데이터 베이스를 쉽게 운영할 수 있다.
- 또한 SQS를 이용함으로써, 기존에 모든 트랜잭션을 데이터 베이스에 의존했지만, 구성요소를 독립적으로 실행해 데이터 베이스에 문제가 생겼을때도 모든 거래를 안전하게 처리할 수 있다.
3-2 . EC2 인스턴스 , Auto Scaling, ELB , SQS 사용
Auto Scaling 이란 ?
- 애플리케이션을 모니터링하고 , 용량을 자동으로 조정하여 최대한 저렴한 비용으로 안정적이고 예측 가능한 성능 유지
- 여러 서비스 전체에서 여러 리소스에 대해 애플리케이션 규모 조정 가능
- 이미 Amazon EC2 Auto Scaling 을 사용해 EC2 인스턴스를 동적으로 조정하고 있는 경우 Auto Scaling 과 결합해 다른 AWS 서비스의 추가 리소스 조정 가능
- 생성한 EC2 인스턴스를 ELB 로드 밸런서에 연결하고 , ELB 로드밸런서느 ㄴ새로 생성된 EC2 인스턴스에 트래픽을 분산
- 보통
cloudwatch
와 연동해 제공하는 측정치와 연동해 조정한다.
![](https://velog.velcdn.com/images/juyoung810/post/a0557fde-a2ba-408c-874e-2c46dbcc32c9/image.png)
ELB 란?
네트워크 트래픽을 분산해 애플리케이션 확장성을 개선한다.
- 부하 분산과 고가용성을 제공하는 서비스
- 한 곳으로 집중되는 HTTP, TCP, SSL 트래픽을 여러 EC2 인스턴스로 분할하고, 서버가 정상적으로 가동중인지 확인(Health Check) 해 일부 EC2 인스턴스가 중단되도라고 트래픽을 정상 EC2 로만 보낸다.
- ELB 는 리전별로 생성해야하고, 여러 가용 영역에서 실행되는 EC2 인스턴스로 부하 분산 가능 따라서 가용 영역 전체가 중단되도 서비스 정상적 제공 가능
확장성, 안정성, 고가용성 유지 및 비용 절감
- EC2 인스턴스의 확장성 뿐만 아니라 AutoScaling 을 통해 다양한 리소스를 조정해 비용을 절감하고, 확장성을 가질 수 있다.
- 또한 ELB를 통해 트래픽을 분산해 고가용성을 가진다.
- SQS를 통해 구성요소를 분리해 확장성을 가질 수 있고, 다른 구성 요소가 작동하지 않더라도 메세지가 안정적으로 전달되어 애플리케이션이 동작하도록 할 수 있다.
4. 정리
- S3 , RDS , SQS -> 고가용성 데이터 베이스 관리에 용이
- EC2, AutoScaling,ELB,SQS 사용 -> 트래픽 분산, 트래픽에 따라 리소스 유연한 조정 가능, 고가용성