1. 온 프레미스(On Premise) 란?
- 기업이 자체적으로 보유한 전산실 서버에 직접 설치해서 운영하는 방식
- 클라우드 컴퓨팅 기술이 나오기 전 까지 기업 인프라 구축의 일반적인 방식이었다
- 정보의 보안성이 높다는 장점이 있고, 시스템을 증설하거나 구축하는데에 시간과 비용이 많이 든다는 단점이 있다
2. 가장 기본적인 서버의 구조
- API 서버와 데이터베이스로 구축한다
- API 서버에는 웹 프레임워크를 설치한다
- 데이터베이스에는 RDBMS를 설치한다
(필자는 Node.js/MySQL, API명세서는 GitBook을 사용)
3. 스토리지 서버(Storage Server)가 필요한 이유?
- 스토리지 서버는 파일을 처리하는데 사용
- 데이터베이스에는 파일을 저장하지 않고, 파일의 경로(주소, 이름, URI, Path)를 저장
4. NoSQL 을 사용하는 이유?
- 기존의 데이터베이스는 데이터의 수 가 늘어남에 따라 확장이 어려웠다. 페이스북이나 인스타그램과 같이 데이터가 무제한으로 발생하는 경우 데이터를 저장하기 위해선 확장성이 중요하므로 확장성을 고려한 데이터베이스인 NoSQL을 사용한다
- NoSQL은 샤드(Shard)라는 기법으로 확장
5. 캐시 서버(Cache Server)를 사용하는 이유?
- 예를들면 프로필 사진과 같이 자주 이용되는 데이터이고, 변경이 잘 안이루어지는 데이터이다.
- 데이터베이스나 스토리지 서버에서 억세스하면 속도가 느리다(데이터베이스나 스토리지 서버는 파일이기 때문) 따라서 이 데이터를 메모리에 올려놓으면 클라이언트가 요청 할 때 마다 빠르게 응답할 수 있다. 이러한 메모리 서버를 캐시서버 라고 한다
- 메모리 서버로는 Redis를 많이 사용한다(AWS의 경우 Elastic Cache에 해당)
6. 메세지 큐(Message Queue) 란?
- 예를들어 사진의 썸네일을 만드는 것과 같이 오래 걸리는 일이 있으면 유저가 기다리게 된다. 따라서 유저가 기다리지 않도록 따로 리시버에게 일을 시킬 수 있게 하는 것이 메세지 큐 이다.
- 메세지 큐 는 먼저 들어온 메세지(일)를 먼저 처리해주는 큐 자료구조를 사용한다
7. 로드 밸런서(Load Balancer)의 역할
- 유저가 늘어날수록 서버가 감당할 수 있는 CPU와 메모리는 제한되어있다. 따라서 유저가 늘어나면 API 서버를 증설해야 하므로 늘어난 API 서버에 유저의 요청을 분배해주는 것 이 로드 밸런서 이다. 즉, 부하는 분산시켜주는 역할을 한다
8. On Premise - AWS Cloud 에서의 서비스 구성 방법
- API Server - EC2
- Load Balancer - ELB(Elastic Load Balancer)
- 데이터베이스 - RDS
- NoSQL - DynamoDB
- Storage Server - S3
- Cache Server - Elastic Cache
- Message Queue - SQS(Simple Queue Service)
'IT' 카테고리의 다른 글
VCS(Version Control System) - Git (0) | 2020.10.06 |
---|---|
RDBMS 와 NoSQL (0) | 2020.10.05 |
자바의 클래스와 객체 Class/Object / Instance (0) | 2020.09.29 |
Data Structure(JAVA Collections) Stack, Queue ... (0) | 2020.09.25 |
REST API (0) | 2020.09.25 |