ㅁ
- 지금까지는 컨테이너에 배포하는걸 해봤다.
- 배포를 aws상에, 클라우드에 배포하는걸 해본다. 똑같다.
- asw에 많은 서비스들이 있는데 다 알아볼 순 없다. 간략하게 aws가 어떤건지 봅시다.
- 물리적으로 서버를 자체 전산실을 가지고 운영하는게 아니라 인터넷상에서 서비스하고 있는 가상의 네트워크 상에 서버도 만들고 네트워크도 만들고 여러가지 서비스들을 제공해주는 플랫폼이 클라우드 서비스다.
전세계 곳곳에 인프라가 구축되어 있다. 그 위에 클라우드 서비스를 구축했다.
- 리전은 지역이다.
- 가용 영역은 리전 안에 데이터센터들을 모아놓은 거다.
데이터 센터는 실제 건물이 있고 그 안에 장비들이 들어가 있다. 네트워크 서버가 구축되어 있다.
일반적인 데이터 센터를 생각하면 된다.
그런 데이터 센터들을 2개이상 묶어서 하나으 ㅣ가용 영역으로 만든다.
서울에는 가용여역이 4개 있다.
가용 영역에는 데이터센터들이 있다.
- 엣지 네트워크는 실제 서비스를 서울 리전에서 하고 있는데 미국에 있느 ㄴ사용자가 서울에 있느 ㄴ서비스를 사용하려고 접속하게 되면 지연이 많이 발생한다. 거리가 멀어서.
그래서 서울에 접속을 하게되면 처음엔 접속을 그렇게 하지만, 가까운 곳에 엣지 네트워크에 캐싱을 해놓는다. cdn서비스라고 한다. 가까운곳에 캐싱해놨다가 빠르게 서비스할 수 있게끔 한다.
- 위는 aws 기준이고 gcp나 ms 에젼?은 다른 용어를 사용한다.
- 리전은 물리적인 지역이다.
- 1개의 aws 리전은 2개 이상의 가용 영역으로 구성되어 있다.
- 리전을 2개 이상 쓰는 경우는 지진 등을 대비해서 다른 지역에다가 똑같은 서비스를 구축해놓는다.
- 가용 영역은 하나 이상의 개별 데이터 센터를 보유하고 있다. 보통 2개 이상.
- 1개의 aws 리전은 2개 이상의 가용 영역으로 구성되어 있다.
각각의 가용영역 안에는 1개 이상의 데이터센터가 구성되어 있다.
- 고가용성은 서비스가 지속되는걸 의미한다. 사용자가 서비스를 사용하려할 때 언제든 사용할 수 있게끔. 장애가 없게끔 운영하는걸 의미한다.
고가용성 설계를 하면 항상 서비스를 하고 있다는 말이다.
그러기 위해서 다중 az를 쓴다. 이 가용영역이랑 저 가용영역이랑 동시에 서비스를 하고 있는 것이다.
- 가용영역도 이중화, 리전도 이중화. 고가용성을 위해서는 무조건 다 이중화되어있어야 한다.
- 엣지 로케이션은 cdn 서비스 이름이다. aws cloudfront, global accelerator가 cdn 서비스를 제공한다.
- 사용자가 저기서 서비스를 하려고 하면 너무 기니까 가까운 엣지 네트워크에 캐싱한다.
- 그 다음ㅇ ㅔ서비스 받을 때는 가까운 쪽에서 서비스를 받는다.
- IAM 서비스는 보안이다.
- 그룹, 계정, 엑세스 관리. OTP를 통한 사용자 인증을 한다던가.
- 서비스와 관련된 보안 서비스가 IAM이다.
- 처음 가입을하면 부여되는 계정은 ROOT 계정이다. ROOT 계정은 모든 걸 다 할수있다. 권한이 너무 많으니까 IAM 계정을 만들어서 사용한다. 권한을 필요한 것만 줘서.
- 그룹별로 권한을 준다.
리눅스의 권한처럼 사용자에게 사용할 수 있는 리소스 권한을 준다.
- 사용자를 그룹을 주고 그룹에 권한ㅇ늘 주면, 그 그룹으 ㅣ사용자들은 다 권한이 있는 거다.
- 역할도 마찬가지. 역할이라고 하는 사용자를 별도로 만들어서 사용자, 그룹에 부여하면 역할 사용자가 할 수 있는 권한을 할 수 있다.
- 사용자, 그룹, 역할에 대한 권한 정책을 정할 때 JSON 형식으로 작성한다.
- 컴퓨팅 서비스에는 여러가직가 있는데 EC2, Lambda가 있다.
ec2는 클라우드 가상 서버다.
- 자바의 람다랑은 다른 개념이다.
앞에 컨테이너를 배웠다. 컨테이너를 이용해서 ~없이 사용자가 서비스를 이용할 수 있게 해주는게 람다다.
서버리스다.
- 인스턴스 시작으로 서버를 만들었다.
- 실행이 되고나면 ssh로 원격접속을 했다.
- 보안그룹은 방화벽이다. 기본적으로는 22번 포트가 열려있는데 추가적으로 필요한 포트가 있으면 보안 그룹에서 열어줘야 한다.
- 탄력적 ip는 공인ip랑 사설ip. 공인 ip는 아무데서나 접근할 수 있는 ip다. 인터넷상에 하나밖에 없다.
private 사설 ip는 여기저기 다 있다. 중복될 수 있다.
우리가 집에서 쓰는 ip는 고정 ip가 아니고 다 유동 ip다. 우리가 ip를 특정해서 산 게 아니고 서비스하는 업체(kt 등)에서 할당해주는 ip다. 이 ip는 바뀔 수가 있다.
고정 ip가 아닌 이상 ip는 바뀔 수 있다. 그래서 유동 ip라고 한다.
- 그렇게 바뀌게 되면 이 서버에 접속하려면 다른 ip로 바꿔서 접속해야 한다.
근데 사용자들은 바뀌었는지 알 수가 없다. 그래서 서버같은 경우는 ip가 바뀌면 안된다. 고정 ip를 써야 한다.
- 탄력적 ip라고 하는게 고정ip다. 안바뀌는 ip다.
- 인스턴스를 시작해서 다 실행되고 나면 ipㄱ ㅏ하나 들어오는데 그건 유동 ip다.
그 인스턴스를 멈췄다가 다시 동작시키면 ip가 바뀐다.
근데 탄력적 ip를 쓰게되면 껐다 켜도 ip가 안바뀐다. 고정ip다.
- 인스턴스 유형은 하드웨어 사양. cpu, gpu 등. 그거에 따라서 원하는 인스턴스르 쓰면 된다.
- ami는 os. 우분투의 몇번 버전가지고 만들어놓은 이미지다.
컨테이너도 이미지가지고 컨테이너를 만든다. 이미지 가지고 컨테이너 만들면 바로 사용할 수 있는 상태가 되는 것처럶,
ami도 이미지 가지고 서버를 만들면 바로 사용할 수 있느 ㄴ상태가 된다.
우분투 이미지를 사용하든 이미지 중에서 선택해서 사용할 수 있다.
또 설정을 다 해놓은 상태로 이미지를 만들 수 있다.
컨테이너가 인스턴스고, ami가 이미지다.
컨테이너 이미지는 필요한것만 모아놓은 거고, ami는 전체 온전한 os가 다 들어있다. 온전한 os를 서버로 쓴다. 대신 용량이 크다. ami도 인스턴스도.
- ec2 라이프사이클. 시작하고 종료하고 멈추고 그런 내용들.
- 클라이언트에서 ssh로 서버에 개인키로 접속을 시도하게 되면 개인키에 해당하는 공용키가 서버에 있으면 인증되서 접속된다.
물론 패스워드로도 로그인하는 방법도 있는데 클라우드 같은 경우는 기본적으로 패스워드는 차단되어 있고 기본적으로 키로 접속한다.
- 접속방법은 맥에서 터미널, 윈도우 파워쉘, 윈도우 푸티 프로그램 등.
우리가 쓰고잇는건 mobaxterm. 이런 터미널 프로그램을 ㅗ접속할 수 있다.
- 보안그룹은 방화벽이다.
- 이 보안그룹은 ec2에 붙어있는 방화벽이다.
- 인바운드는 외부에서 ec2로 들어오는 트래픽, 아웃바운드는 ec2에서 나가는 트래픽이다.
- 기본적으로 보안그룹에 아웃바운드는 다 열어놨다.
인바운드는 22번만 열어놓은 거다. 외부에서 접속하려할 때 22번 통해서만 접속할 수 있게.
근데 80번, 443번 포트를 사용해서 웹접속을 하려할 때는 방화벽 보안그룹에서 그 포트 번호를 열어줘야 한다.
- 아웃바운드는 몽땅 다 열어놨다.
보통 아웃바운드는 안건드리고 인바운드에 대해서만 건드린다.
- 만약 마리아디비 설치하고 접속할거다. 그럼 3306열어줘야하고 오라클로접속할거다 그러면 1521 열어줭 ㅑ하고.
- 프라입시 아이피는 중복이 되는 아이피. 이걸로는 직접 접속이 불가능하다.
- 퍼블릭 아이ㅏ피는 고유 아이피.
- 웹서버가 있고 인터넷 상에서 웹 서버에 할당되어 있는 퍼블릭 ip가 있다면 접근이 가능하다.
- 기업, 집의 경우 공유기가 있고 공유기까지 퍼블릭 ip가 할당되어 있고, 그 내부는 사설 ip로 되어 있다.
- 인터넷 상에서 접근할 수있는 거는 웹서버로는 접근 바로 가능, 인터넷 ㅔㄱ이트웨이까지 접근가능, 기업내부 사설망에는 접근 불가능.
- ngrok은 인터넷게이트웨이롲 ㅓㅂ근하면 기업냅 ㅜ사설망에 접근할수있게 해주는 서비스였다. 그런 서비슫 ㅗ있다.
- 탄력적 ip는 고정 ip다.
- 퍼블릭 ip주소는 내가 탄력적 ip 주소를 받으면 나만 쓰는거다. 안바뀐다.
- EIP를 받으면 서버를 껐다 켜도 IP가 안바뀐다.
EIP를 안받으면 서버를 껐다 키면 IP가 바뀐다.
- AMI 아마존 머신 이미지.
이게 컨테이너 이미지라고 생각하면 된다.
이거 가지고 서버를 만들 것이다. EC2를.
- 컨테이너 이미지가지고 컨테이너 만드는 것처럼.
- AWS에서 제공하는 AMI, 마켓플레이스는 특정 밴드에서 등록해놓은 AMI, 커스텀 AMI는 내가 등록하느 ㄴ거다.
내가 이 이미직 가지고 인스턴스를 만들고 필욯나 파일들 설치하고 애플리케이션도 넣고 그렇게 구축했다. 근데 그상태의 서버를 내가 단데다가 새로운 인스턴스를 만드려고 할때 서버2 대를 쓴다 할 때 그럼 그 작업을 또 해야 한다.
그 상태를 이미지로 만들어서 그 이미지로 EC2 인스턴스를 만들면 똑같이 만들어진다.
컨테이너 이미지와 똒같다.
현재 상태 그대로 이미지를 만들면 다른 컨테이너 생성할 때 똑같이 만들 수 있따.
- 운영중인 EC2 인스턴스를 커스텀 AMI로 만들어서 동일한 환경으로 구성된 EC2를 빠르게 시작 가능.
- EC2 라이프 사이클은 처음 시작하면 인스턴스 상태(만들어지 ㄴ상태에서) 시작은 전원을 키는것과 같다.
재부팅은 재부팅이고. 중지는 전원을 끄는것. 종료는 TERMINATE인데 인스턴스가 삭제된다.
끈다는 의미가 아니라 완전히 삭제시킨다는 의미가 된다.
필요없는 인스턴스가 있따면 종료를 해야 한다. 중지를 하면 트래픽 요금이 부과안되지만 그 인스턴스가 살아있는 동안에는 요금이 부과된다.
- 최대절전 모드도 있다.
- 이런것들 참고삼아 알아두세요.
- 실제 밖에서 서비스할 땐 서버 1대 가지고 하지 않는다. 서버에 장애가 발생하면 서비스가 안되니까 똑같은 서버를 2대 이상 운영한다. 평상시에는 두 대 다 서비스하다가 한곳에 문제 생기면 다른데서 서비스하게끔 장애 대비한다.
- 트래픽이 너무많이오면 서버가 과부화 걸린다. 그럼 더 높은 사양으로 바꿔주는게 수직적 확장이다.
- 자원을 추가하는 방식이다. CPU가 2개인데 4개로 늘린다거나, 렘을 16기가에서 64기가로 늘리는 등.
- 수평적 확장은 한개를 쓰고 있다가 트래픽이 많이 들어오게 되면 늘려주는거. 똑같은 서버를 여러대 둔다.
그럼 트래픽이 분산된다. 노드를 추가하는 방식이다.
- 수직적 확장도 있고 수평적 확장도 있는데 일반적으론 수평적 확장을 많이 씁니다.
예매 사이트에서 노드를 늘려서 다운되지 않게. 대기열은 네트워크상에서 해주는 방식이고 암튼 서버쪽에선 이렇게 한다.
근데 이걸 수동으로 하면 힘들잖아요. 원래 1대인데 4대로 하면 3대 더 늘려야하니까.
이걸 자동으로 해준다는 거에요. 자동으로 확장시켜줌.
- 쓰고 있는 서버를 가지고 커스텀 AMI를 만들고, 노드를 늘릴 때 그 AMI를 ㅣ용해서 노드를 늘ㄹ린다. 그럼 똑같은 서버가 만들어진다.
이걸 오토 스케일링이라 한다. 자동으로 확장한다. 클라우드 썼을때으 ㅣ가장 큰 이점이다. 트래픽 몰렸을 때 자동으로 늘려주는게. 물리적으로는 불가능하다 이렇게 즉각적으로 늘리는게.
더 좋은건 트래픽 줄어들면 또 자동으로 줄어드는것이다.
트래픽에 맞춰서 서버를 엄청 구축해 놓으면 1년중 하루 빼고는 다 놀고있는데, 클라우드 서버의 이점은 필요할 때만 늘렸다 필요없을 때는 다시 줄일 수 있는 것이다.
- 우리는 주로 수평적 확장을 많이 쓴다. 노드를 증가시킴.
- 여기서도 하나으 ㅣ서버가 아니라 컨테이너라고 생각해도 똑같다.
컨테이너 하나를 만들어놧는데 트래픽이 많이 오거나 어떠한 이유에서건 컨테이넉 ㅏ다운될 수있는데 그럼 알아서 살려주고, 트래픽이 많이 오면 컨테이너를 늘려주고. 이런 컨테이너 관리를 해주는게 쿠버네티스다.
- 고 가용성은 사용자가 내가 원하는 때에 서비스를 받을 수 있게 보장해주는 것이다.
- 보안에선 CIA라고, 기밀성(암호화를 통해서 허가받지 않은 사용자는 내용을 볼 수 없게끔), 무결성(내가 서버 어디에선가 받았는데 그 데이터가 변조가되지 않았음을 보장해주는것), 가용성. 이게 보안의 3요소다.
이 3가지가 다 지켜녀야지 보안침해를 받지 않았따는것. 보안이 유지된다는것을 의미한다.
하나라도 침해되면 보안이 안되는것이다.
- 디도스 공격을 받아서 다 다운되어버리면 서비슬르 사용할 수 없다.
서비스를 사용하는것 자체가 보안을 의미한단 것이다.
- AWS에서는 저 퍼센트를 99.9999999(일레븐 나인)의 가용성을 자기네가 보장해준다고 한다.
물론 자기들 말이지만.
-가용영역 하나가 문제 생겨도 다른데서 서비스 되고, 가용영역 안에서도 또 이중화를 한다. 다 똑같으 ㄴ서비스를 이중화.
어던거 하나라도 문제가 생겨도 서비스가 되게끔. 고 가용성을 유지하기 위해서는 전부 이중화다. 이중화를 통해서 서비스가 중단되지 않는다.
- 개발자 입장에서는 웹 애플리케이션ㅇ ㅣ정상적으로 동작을하고 사용자가 서비스를 정상적을 ㅗ사용하게끔 해주는게 가용성이다.
- 가용성을 AWS 자체가 제공해주고 있고(일레븐나인), 서버도 2대이상 구축하고, 그 안에 필요한 서비스들도 2개 이상 구축하는게 클라우드안 에서 구축하면 실제 물리적으로 구축하는 것보다 용이하다.
- 이것도 고가용성의 하나다.
- 로드밸런싱은 로드가 부하다. 분산이다. 로드밸런싱은 부하 분산이다.
A, B, C 사용자가 로드밸런싱이 없고 EC2가 한대있으면 모든 사용자가 저 EC2한대를 쓴다. 근데 저 EC2한대가 다운되어버리면 사용할 수가 없다.
그래서 EC2가 죽을걸 대비해서 여러개를 만든다. 그럼 사용자들이 이 3개를 번갈아가면서 다 쓸 수 있게 해줘야 하는데 그때 로드밸런서라는 장비를 둬서 번갈아가면서 분산을 시켜준다. 그럼 여기서 트래픽이 많이 들어와도 한댁 ㅏ다 받는것보다는 분산이 된다. 트래픽이 분산된다. 그러다가 EC2중 한대가 문제가 생기면 그건 빼버리고 다른데로 분산된다.
- 로드밸런싱해주는 장치를 로드밸런서라고 한다.
- AWS에서 로드밸런싱을 해주는 게 ELB란 거다.
AWS에서는 원래 바깥의 클라우드랑 비교해서 실제 상태으 ㅣ인프라를 ONPREMISE라고 한다.
온프레미스는 실제 장비가 있는거다. 정ㄴ산실이 있고 데이터센터가 있고. 온프레미스상 실제 사용하고 있느 ㄴ내용들을 전부 다 서비스로 만들어놓은거다. AWS는. 그래서 AWS는 서비슥 ㅏ엄청 많다.
- EC2는 서버를 제공해주는 서비스, 람다는 서버없이 코드로 동작시켜주는 서비스. 로드밸런싱을 제공해주는 서비슨는 ELB.
그런 서비스가 엄청 많다.
- ELB의 유형은 ALB, NLB가 있따.
- NLB는 쉽게말해서 포트가지고 구분한다. 80번 포트로 가는 거는 웹서버잖아요. 우베ㅐ서버로 가는 트래픽을 분산시켜 주겠다.
- ALB는 HTTP, HTTPS에 대해서만 특화되서 로드밸런싱을 제공한다.
- 우리가 쓸 경우가 있어도 대부분 ALB를 쓸거다.
왜냠녀 HTTP, HTTPS 웹서비스 트래픽을 분산시켜주는데 특화된 로드 밸런서라.
- ELB 안에 그 안으 ㅣALB를 주로 쓴다.
- 오토 스케일링. 확장성.
최소용량, 원하는 요량, 최대용량 해서 트래픽이 들어온 거에 따라서 저 상태를 유지시켜 준다.
서버 부하가 많이 걸리면 이건 기준을 만들어 놓는거다. 트래픽 양이 지정된 시간에 얼마나 많이 들어오냐에 따라서 증가하거나, CPU사용량이 70%이상이되면 느려진다. 이런 기준ㅇ르 정해서 자동적으로 스케일링이 되게끔 해준다.
- 이건 오토스케일링 하는 방식이다.
- 시작템플릿으로 AMI를 커스텀 AMI로 등록해놓으면 그상태로 서버가 시작된다.
- 조정 옵션은 어떤 기준으로 서버를 늘리고 줄일지.
- 서버리스는 말 그대로 서버가 없다.
내가 관리할 서버가 없다ㅏ. 원래는 인스턴스를 시작해서 낵 ㅏ서버를 만들고 거기다가 개발 애플리케이션이 돌아갈수있느 ㄴ환경을 구축해줘야 하는데, 서버리스는 내가 그런 서버를 만들 필요가 없고 이 서버리스 안에는 자바코드, 파이썬코드가 실행될 수 있는 환경을 AWS가 제공해준다.
내가 자바 코드를 집어놓고 동작시키면 컨테이너가 만들어져서 동작하고 결과만 내게 알려줌.
서버리스는 내가 직접 서버를 관리할 필요가 없다는 의미다.
- 서버리스 서비스 중에 람다, DYNAMODB 등등이 있다.
- 이후로는 내일까지 수업하고 시간 남으면 한다.
'배포 > AWS' 카테고리의 다른 글
5. 프로젝트 젠킨스로 배포 해보기 (1) | 2024.12.11 |
---|---|
4. 젠킨스로 배포 (1) | 2024.12.11 |
3. CI/CD - Jenkins, GitHub, Eclipse (0) | 2024.12.10 |
2. AWS EC2(우분투)에 배포하기 (1) | 2024.12.10 |