클라우드 컴퓨팅
비기능 요건 : 시스템의 성능을 위한 신뢰도/보안성/유지보수성/확장성..등과 관련된 요건이다.
비기능 요건을 충족시키기 위해서는 프로그래밍 지식이외에도 인프라 지식이 필요하다
인프라란?
쉽게 말해서 시스템을 구성하는데 필요한 시설과 같은것을 의미한다.
예를 들어 문화 시설이 발달한 지역을 문화 인프라가 발달했다고 하고,
교통 시설이 발달한 곳을 교통 인프라가 잘 발달됐다고 하는 맥락과 비슷하다고 볼 수 있다.
시스템 인프라가 잘 갖춰져있다는 것은 시스템을 구축하는데 필요한 아키텍처가 잘 구성되어있다고 보면 될것같다.
시스템 기반이란 ?
어플리케이션을 24시간 365일 동안 정상적으로 사용할 수 있도록 환경을 뒷받침하는 기술 요소를 의미한다
시스템 기반에는 네트워크나 항온항습기, 무정전 전원장치 등의 인프라뿐만 아니라 애플리케이션 서버/
데이터베이스 서버/ 감시 서버 등의 서버군도 포함된다. 이러한 시스템 기반은 데이터 센터라는 곳에 설치되어 운용된다.
DNS(Domain Name System)란?
DNS는 사람이 읽을 수 있는 도메인 이름을 기계가 읽을 수 있도록 IP주소로 변환하는것을 의미한다.
(우리집은 K땡 회사 인터넷을 사용하는데 금일 회사에서 문제가 발생하면서 인터넷이 잠시 안됐었다.
어떤 문제인지는 정확히 알 수 없지만, DNS장치에 문제가 발생하여 인터넷이 연결이 안된다는 에러문구가 떴었었다. DNS에 대해 정처기 공부하면서 어렴풋이 보기만 했지 정확한 의미는 몰라서 알아봤다..ㅎㅎ)
온프레미스 : 기업내에 직접 데이터센터를 구축하는 방식
퍼블릭 클라우드 : 인터넷을 통해 불특정 다수에게 제공되는 클라우드 방식, 사용자가 이용하는 만큼 비용이 지불되고, 초기 비용이 발생하지 않는다.(iaas/paas/saas 등이 있다.)
프라이빗 클라우드(Private Cloud) : 특정 그룹에게만 제공되는 클라우드 방식으로, 퍼블릭 클라우드에 비해 보안성이 강하다.
iaas : 서버나 os, 네트워크, 데이터 저장 영역..등을 제공하는 서비스이다.
paas : 사용자가 프로그래밍에만 전념할 수 있도록 하드웨어 및 미들웨어를 제공하는 서비스 방식
saas : 이미 완성된 기능을 서비스로써 제공하는 방식
클라우드 퍼스트란
시스템을 설계하고 이행할 때 클라우드 서비스 적용을 제일 먼저 검토하는 것을 의미한다.
RTO란
재해나 장애로 인해 서버가 다운되고나서 다시 복구될 때까지 필요한 시간
RPO란
재해로 시스템이 정지된 경우, 데이터를 특정 시점까지 복구하는 지점을 의미한다.
예시로 재해로 시스템이 정지된 경우 데이터를 재해 발생 전날까지로 복구한다와 같은 상황을 들 수 있다.
IAM이란
IAM은 AWS에서 사용자 인증 기능과 그룹에 대한 접근을 제어하는 서비스이다.
Multi-Server패턴이란
가상 서버 기능을 하는 EC2 인스턴스를 여러개 나란히 늘여놓고 ELB가 부하를 분산시키는 구성이다
이로 인해 시스템의 가용성이 증가한다.
Scale-Up 패턴이란
리퀘스트의 많고 적음에 따라 서버의 스펙을 자동으로 확장/축소하는 방식이다.
DB Replication 패턴(데이터베이스 복제 패턴)
RDS(Relation Database)를 서로 다른 Availability zone에 배치하고 복제하는 방식으로, 재해로부터 데이터 손실을 방지하기 위한 패턴이다.
Functional FireWall 패턴(계층별 접속)이란
서버의 역할에 따라 접속을 제한하는 패턴이다. EC2 인스턴스와 RDS 인스턴스에 보안 그룹을 설정하고 필요한 통신만 허가한다.
클라우드에서 리전(Region)이란
AWS의 데이터센터가 설치되고 있는 지역을 의미한다.
Availability zone이란
각각의 리전은 물리적으로 다른 위치에서 다른 환경으로 구축되어 있다.
같은 Availability zone에서의 통신은 개인 IP주소를 이용해 통신함으로 통신 비용이 들지 않는 반면에 각기 다른 Availability zone에서의 통신은 글로벌 IP주소를 사용하기 때문에 통신에 비용이 든다.
또한 재해에 대비하여 다른 Availability zone에 운용하는 구성을 멀티 AZ 구성이라고도 부른다
Web 애플리케이션과 네이티브 애플리케이션의 차이점은?
Web 애플리케이션은 설치하지 않아도 브라우저 상에서 자유롭게 사용할 수 있는 반면에
네이티브 애플리케이션은 애플리케이션을 단말기에 설치해야 사용할 수 있다.
또한 Web사이트는 서버에 공개된 동영상이나 텍스트를 저장해서 그대로 브라우저에 보여주는 방식을 의미한다.
URL(Uniform Resource Locator)이란
네트워크상에 정보 자원에 대한 장소를 기술하기 위한 데이터형식 즉, 웹 애플리케이션의 주소를 의미한다.
HTTP는 정보를 교환할 때 정보가 유출될 가능성이 있으므로,
암호화된 HTTPS를 이용해서 보안성을 증가시킨다.
Amazon S3(Simple Storage Service)란?
클라우드상에 스토리지 기능을 서비스하는 것을 의미, 99.99%의 내구성과 가용성을 갖고 있다.
.
Amazon EC2(Elastic Compute Cloud)란?
가상서버기능을 제공하는 클라우드 서비스이다.
EC2의 큰 특징인 오토스케일이란?
요건에 맞춰 인스턴스 처리 능력을 확장 또는 축소할 수 있는 기능을 의미한다.
오토 스케일은 데이터베이스 인프라 구축 사이징의 어려움을 해소해주는 큰 역할을 한다.
EC2의 용어
- 인스턴스 : 1대의 서버
- EBS(Amazon Elastic Block Store) : 서버의 하드웨어에 해당하는 가상디스크
- AMI(Amazon Machine Image) : 서버에 설치하는 OS와 미들웨어 그리고 각종 애플리케이션 이미지(동일한 형태의 인스턴스를 여러개 만들 때 사용 )