쁘락치 서버?ㅋㅋ
대게 일반 사용자는 지역이 제한되어있는 서비스를 이용하기 위해 우회하거나, 캐시를 통해 더 빠른 이용을 하기 위해서 프록시 서버를 사용한다.
위치에 따라 Forward Proxy와 Reserve Proxy 두 가지로 나뉜다.
거두절미하고, 프록시 서버가 클라이언트에 가까운지 서버에 가까운지로 구분한다.
Forward Proxy는 클라이언트 가까이에 위치한 프록시 서버로 클라이언트를 대신해서 서버에 요청을 전달한다.
주로 캐싱을 제공하는 경우가 많아서 사용자가 빠른 서비스를 이용할 수 있도록 도와준다.
Revers Proxy는 Forward Proxy와는 반대로 서버 가까이에 위치한 프록시 서버로 서버를 대신해서 클라이언트에 응답을 제공한다.
주로 분산처리를 하거나 보안을 위해 Reverse Proxy 서버를 이용한다.
Scale-Up은 물리적으로 서버의 사양을 높이는 하드웨어적인 방법
서버의 수를 늘리지 않고, 프로그램 구현에 있어 변화가 필요없다.
서버의 사양을 높이는데 굉장히 높은 비용이 들고, 하드웨어의 업그레이드엔 한계가 있음. 사양을 늘린만큼 클라이언트의 요청이 더욱 많아진다면, 서버에 발생하는 부하는 결국 해결하지 못한다.
Scale-Out은 서버의 갯수를 늘려 하나의 서버에 줄 부하를 분산시키는 방법니다.
많은 요청이 오더라도 여러대의 서버가 나눠서 처리를 하기 때문에 서버의 사양을 높이지 않고도, 저렴한 방법으로 부하를 처리할 수 있다.
Scale_Out 방법으로 여러대의 서버로 부하를 처리하는 경우, 클라이언트로부터 온 요청을 여러 서버 중 어느 서버에 보내서 처리해야할까?
요청을 여러 서버에 나눠 처리할 수 있도록 교통정리(?)를 해줄 역할이 필요하다. 이 역할을 하는 것이 로드밸런서이고, 여러 서버에 교통정리를 해주는 기술 혹은 프로그램을 로드밸런싱이라고 부른다.
로드 밸런서는 클라이언트의 요청을 어떤 것을 기준으로 분산시키냐에 따라 네가지의 종류로 나뉜다.
로드 밸런서의 종류 | 로드밸런싱의 기준 |
---|---|
L2 | 데이터 전소 계층에서 Mac주소를 바탕으로 로드 밸런싱 한다. |
L3 | 네트워크 계층에서 IP주소를 바탕으로 로드 밸런싱 한다. |
L4 | 전송 계층에서 IP주소와 Port를 바탕으로 로드 밸런싱한다. |
L7 | 응용 계층에서 클라이언트의 요청을 바탕으로 로드 밸런싱 한다.(예 : 엔드포인트) |
주의 : AWS의 오토스케일링에 기반해서 작성
처음 오토스케일링을 들었을 때가 MBC 뉴스.. 당시 백신 신청이 더럽게 안 됬을 때, 하버드 컴공 출신 당시 국힘 당대표였던 준스톤이 오토스케일링을 말하던데 그 때 들었다... 댓글이 웃겼다.. "오토스케일링을 뉴스에서 듣다니 ㄷㄷ"이런식으로..
오토스케일링은 Scale-Out방식으로 서버를 증설할 때 자동으로 서버(리소스)를 관리해주는 기능이다.
클라이언트의 요청이 많아져 서버의 처리 요구량이 증가하면 새 리소스를 자동으로 추가하고 반대로 처리 요구량이 줄어들면 리소스를 감소시켜서 적절한 분산 환경을 만들어준다.
Auto Scaling은 EC2 인스턴스를 뿐만 아니라 다른 인스턴스와도 결합 가능하지만, EC2 사용자에게 가장 인기가 많은 서비스이다. EC2 AutoCaling은 오직 EC2 서버라는 리소스만 대상으로 한다.
AMI 상세 정보, 인스턴스 타입, 키 페어, 시큐리티 그룹 등 인스턴스에 대한 모든 정보
를 담고 있다.AMI의 ID, 인스턴스 유형, 키 페어, 보안 그룹 등의 정보를 포함
시켜서 시작 구성을 생성한다.Auto Scaling 그룹은 스케일업 및 스케인 다운 규칙 모음
으로 EC2 인스턴스 시작부터 삭제까지의 모든 동작에 대한 규칙과 정책을 담고있다.
인스턴스 레벨 유지
기본 스케일링 계획으로도 부르며, 항상 실행 상태를 유지하고자 하는 인스턴스의 수를 지정할 수 있다. 일정한 수의 인스턴스가 필요한 경우 최소, 최대 및 원하는 용량에 동일한 값을 설정할 수 있다.
수동 스케일링
기존 Auto Scaling 그룹의 크기를 수동으로 변경할 수 있다.
수동 스케일링을 선택하면 사용자가 직접 콘솔이나 API, CLI 등을 이용해 수동으로 인스턴스를 추가 또는 삭제 해야한다.
일정별 스케일링
예측 스케일 트래픽의 변화를 예측할 수 있다.
특정 시간대에 어느 정도의 트래픽이 증가하는지 패턴을 파악하고 있다면 일정별 스케일링을 사용하는 것이 좋다.
동적 스케일링
수요 변화에 대응하여 Auto Scaling 그룹의 용량을 조정하는 방법을 정의한다.
이 방식은 CloudWatch가 모니터링하는 지표를 추적하여 경보 상태일 떄 수행할 스케일링 규칙을 정한다.
Tomcat은 Apache사에서 개발한 서블릿 컨테이너만 있는 오픈소스 웹 애플리케이션 서버이다.
Spring Boot의 내장 서버이다.
Jetty는 이클립스 재단의 HTTP 서버이자 자바 서블릿 컨테이너이다. Jetty도 Tomcat과 같이 자바 서블릿 컨테이너이자 서버로 사용할 수 있다.
서브넷은 VPC의 CIDR 블록을 이용해 정의하며, 최소 크기의 서브넷은 /28
이다. 서브넷은 AZ당 최소 하나를 사용할 수 있고, 여러개의 AZ에 연결되는 서브넷은 만들 수 없습니다.
Tips ) AWS가 확보한 서브넷 중 처음 네 개의 IP주소와 마지막 IP주소는 인터넷 네트워킹을 위해 예약되어 있다.