참조하면 좋은 사이트:
https://www.44bits.io/ko/keyword/amazon-web-service
요약
- 운영 서버: 개발이나 테스트 목적이 아닌 실제 사용자들을 대상으로 서비스하는 서버.
- 운영 서버의 아키텍쳐의 분류
- 단일 서버
- 애플리케이션 / 데이터베이스 서버 분리
- 서버 단위 로드 밸런서
- 서버 내 앱 단위의 로드 밸런서
- 운영 서버 구축 방법
- On-premise: 자체 데이터 센터를 운영하는 방법
- Cloud Computing: 클라우드 컴퓨팅 기술을 이용하여 클라우드 환경에 만드는 방법
- 온프레미스 : IT 서비스를 기업이 자체적으로 보유한 물리적인 서버에 직접 설치해 운영하는 방식
- 클라우드 컴퓨팅 : IT 리소스를 인터넷을 통해 온디맨드로 제공하고 사용한 만큼만 비용을 지불하는 방식
개발이나 테스트 목적이 아닌 실제 사용자들을 대상으로 서비스하는 서버.
로컬 서버 | 운영 서버 | |
---|---|---|
목적 | 개발 및 테스트 | 사용자 서비스 제공 |
특징 | 요청이 적음 | 많은 요청 트래픽 대응 |
빠른 응답 속도 | ||
높은 가용성 보장 |
장점
단점
애플리케이션과 데이터베이스를 각각의 서버로 구성하는 방법.
단일 서버의 단점 일부 해소
두개의 서버를 관리하므로 구성 다소 복잡,
애플리케이션 서버와 DB 서버 간 지연 시간, 네트워크 보안을 고려해야 함
클라이언트는 여전히 하나의 애플리케이션 서버를 바라보므로 Scale-out은 여전히 어려움.
로드 밸런서란?
Scale-out 방식을 통해 서버를 여러 대로 늘려 애플리케이션 서버에 들어오는 수많은 요청을 여러대의 서버에 적절히 나눠주는 네트워크 장치 혹은 프로세스
클라이언트는 로드 밸런서 서버와 통신하며, 그 뒤에 여러대의 애플리케이션 서버를 둔다.
장점
단점
기존에 하나의 로드 밸런서가 여러개의 서버로 요청을 분산해주었던 방식에서, 서버 내에 앱 단위의 로드 밸런서가 추가 된 방식.
기존의 애플리케이션 서버 안에서 똑같은 애플리케이션을 여러 프로세스로 만들어 실행 해놓고 외부에서 들어온 요청을 프로세스 중 하나로 보내주는 방식.
장점
이러한 복잡하고 체계적인 운영 서버를 구축하는 방법
1. 자체 데이터 센터를 운영
2. 클라우드 컴퓨팅 기술을 이용하여 클라우드 환경에 만드는 방법
IT 서비스를 기업이 자체적으로 보유한 물리적인 서버에 직접 설치해 운영하는 방식
클라우드 컴퓨팅 기술이 나오기 전, 기업들이 사용하던 일반적인 인프라 구축 방식
인프라를 물리적으로 직접 구축하여 운영
기업이 직접 구성에 맞게 하드웨어를 구입
프로젝트에 필요한 자원을 최대 사양 기준으로 예측하여 인프라 기술자가 물리적인 구성을 설계하는데 예측과 실제 프로젝트 간 차이로 인해 불필요한 비용 발생 가능
구축 후 지속적인 모니터링, 구성 변경 등 유지, 보수 필요.
보안에 민감한 조직(군대, 보안 회사): 자체적인 강력한 보안 시스템 개발 또는 외부망과의 단절을 위해 온프레미스 방식 구축.
클라우드 컴퓨팅 인프라 계층의 핵심 요소: 스토리지, 네트워킹, 컴퓨팅
Linux, Ubuntu, Debian, Window, MacOS와 같은 운영 체제를 실행하는 데 필요한 CPU, Memory, Storage와 일부 가상화된 네트워크 기능으로 구성된 물리적인 서버(컴퓨터).
CPU, RAM, Storage, Network 기능으로 구성된 물리적인 서버
서로 다른 위치에 존재하는 컴퓨팅 자원을 제공하는 서비스.
사용자의 compute(물리적 서버) 요구가 들어올 때마다
시스템 엔지니어가 물리적인 서버를 설치 후, 대여해준다면?
시간 오래 걸림, 비효율적!
업체 - 서로 다른 물리적 위치에 존재하는 컴퓨팅 자원을 가상화 기술로 통합해 인터넷에서 클라우드 컴퓨팅 서비스를 제공.(전세계에 흩어진 서버 팜)
사용자 - IT 리소스를 인터넷을 통해 온디맨드로 제공받고 사용한 만큼만 비용을 지불.
온프레미스 | 클라우드 컴퓨팅 |
---|---|
직접 서버 장비 구매 | 요청하는 즉시 컴퓨팅 자원을 제공 |
원하는 시간동안 원하는 만큼의 컴퓨팅 자원을 언제 어디서나 이용 | |
불필요한 절차 없이 쉽게 프로젝트 구성 | |
프로젝트 초기 구성 시 비용 절감 | |
인터넷 통해 온디맨드로 IT 리소스 제공 | |
사용한 만큼의 비용만 지불 | |
손쉽게 서비스 규모에 따라 리소스 확장 및 축소 |
관리 주체와 수준에 따라 3가지로 구분
IaaS(Infrasturcture as a Service, 아이아스)는 가장 기본적인 형태.
비즈니스 운영에 필요한 스토리지, 네트워킹 및 컴퓨팅 자원 제공.
다른 모델들과 비교하여 사용자의 관리 영역이 가장 넓다.
사용자가 직접 OS, Middleware, Runtime 등을 직접 구성 및 관리
장점: 사용자가 직접 많은 부분을 구성하고 관리할 수 있다
단점: 인프라 운영에 대한 지식, 경험이 준비되지 않은 경우 활용 어려움.
예) AWS Elastic Compute Cloud (EC2), Microsoft Azure Virtual Machines, Google Compute Engine..
PaaS(Platform as a Service, 파스) 애플리케이션 및 서비스를 구축할 수 있는 플랫폼 제공
OS, Middleware, Runtime 등 개발 환경을 미리 구축해 서비스 형태로 제공하기 때문에 관리적인 측면에서 IaaS보다 자유도가 낮다.
사전에 구축된 환경에서 개발하기 때문에 의존성 있음.
장점
예) AWS Elastic Beanstalk, Heroku, Redhat OpenShift
SaaS(Software as a Service, 사스)는 클라우드 컴퓨팅 서비스의 주요 기능 3가지 중 가장 완성된 형태의 서비스.
단점
예) Google Drive, iCloud, Slack, Zoom, Dropbox
온프레미스 | 클라우드 컴퓨팅 |
---|---|
천재지변에 대응 못함 | 천재지변에 대응 |
ex) 카카오 화재 | |
ex) 미국 홍수, 허리케인 |
S3는 N드라이브 같은 개념
캐싱: 임시로 저장한 데이터
거의 모든 회사가 EC2를 사용한다
왜? 예를 들어 B2C, B2B 솔루션을 개발하는 회사라면 24시간 프로그램이 운영되어야 한다. name value, brand value를 따졌을 때 그 회사의 노하우가 담겨 있어 신뢰성, 안정성을 보장하는 AWS를 선택하게 된다.
멘토's tip
- 채용공고를 자주 볼 것!
내가 가고싶은 회사는 어떤 역량을 요구하는지.
어떤 서비스, 문화, 특징을 가진 회사에 가고 싶은지.
해보고 싶은 서비스는 무엇인지:
ex) 트래픽(이용자수) 많은 서비스 -MAU
를 기준으로 찾아보자- 개발자라면 DNS를 꼭 알고 넘어가자
- Product 관점에서 이해하고 개발을 고민하라
그리고나는 Product 관점에서 개발하는 습관이 있습니다
라고 말하는 개발자가 되자
MAU, DAU, MCU, ACU
MAU(Monthly Activity User) : 월별 활동 이용자
https://brunch.co.kr/@supims/165