우아한테크코스 level 2-5 배포 인프라 미션 회고 및 학습 프로필
와일더의 학습 프로필 🃏
배포 인프라 미션을 하면서 새롭게 학습한 내용을 정리했습니다.
[AWS] Cloud - 5
내용
인터넷을 통해 원격으로 접근할 수 있는 모든 것이다.
클라우드 컴퓨팅
서버, 데이터베이스, 네트워킹 등 컴퓨팅 리소스를 인터넷을 통해 관리하는 것을 의미한다.
데이터, 서버, 네트워크를 관리하기 위해 선택할 수 있는 방식은 여러 가지가 있다. 개인 PC 에서 서비스를 하는 방법, 사무실 서버로 서비스하는 경우, 데이터센터를 활용하는 경우 등이 있다. 하지만 각각의 상황마다 고려해야할 사항들이 있는데 이러한 고민들은 Cloud 제공 업체가 한다. 핵심은 관심사의 분리다.
링크
[AWS] Amazon EC2 - 5
내용
클라우드에서 확장 가능 컴퓨팅 용량을 제공한다. 하드웨어에 선투자할 필요없이 더 빠르게 애플리케이션을 개발하고 배포할 수 있다. EC2 를 통해 원하는 만큼 가상 서버를 구축하고 보안 및 네트워크 구성과 스토리지 관리가 가능하다. 또한 요구 사항이나 갑작스러운 인기 증대 등 변동 사항에 따라 신속하게 규모를 확장 및 축소할 수 있어서 트래픽 예측 필요성이 줄어들게 할 수 있다.
링크
[AWS] Bastion - 5
내용
적으로부터 효과적으로 방어하기 위해 만들어진 성 외곽의 돌출된 부분을 의미한다. 즉, 터미널 포트에 문제가 발생해서 본 서버에 영향을 끼치는 상황을 대비해 구축해두는 서버로서 악성 루트킷, 랜섬웨어 등으로 피해를 보더라도 Bastion Server 만 재구성해서 서비스에 미치는 영향을 최소화 할 수 있다.
서비스 정상 트래픽과 관리자용 트래픽을 구분 할 수 있다. 만약 바스티온 서버에 DDos 공격을 받아 대역폭을 모두 차지당한 상태라면 본 서비스용 서버에 접속할 수 있는 관리자용 경로를 확보해 둘 수 있는 것이다. 따라서 포트 접속을 Bastion 서버에 오픈하고 그 서버에 보안을 집중하는 것이 효율적이다.
링크
[AWS] Reverse Proxy - 4
내용
TLS 와 같은 부수적인 기능으로 애플리케이션에 직접 영향을 주고 싶지않고, 비즈니스 로직만 담당하고 싶을 때 Reverse Proxy 를 이용하면 된다. 클라이언트로부터 요청을 받아서 적절한 웹 서버로 요청을 전송해주는 역할을 한다. 웹 서버에서는 요청 받은 내용을 평소처럼 처리하고 난 후 응답을 클라이언트로 바로 보내지 않고 Reverse Proxy 로 반환한다. 요청을 받은 Reverse Proxy 는 그 응답을 클라이언트로 반환한다.
통상의 Proxy Server 는 LAN -> 의 요청을 대리로 수행하지만, Reverse Proxy 는 WAN -> LAN 의 요청을 대리한다. 따라서 클라이언트의 요청이 웹서버로 전달되는 도중의 처리에 끼어들어서 다양한 전후 처리를 할 수 있다.
보안성 향상, 확장성 향상, 웹 가속(압축 / SSL 처리로 백엔드 리소스 확보 / 캐싱)에 초점이 맞춰져있다.
링크
[AWS] TLS (Transport Layer Security) - 4
내용
인터넷에서 정보를 암호화해서 송수신하는 프로토콜이다. SSL(Secure Sockets Layer) 에 기반한 기술로, 국제 인터넷 표준화 기구에서 표준으로 인정받은 프로토콜이다. 다양한 종류의 보안 통신을 하기 위한 프로토콜이다. HTTP, SMTP, FTP 같은 프로토콜에 적용 가능하다.
TLS 를 사용해 암호화된 연결을 하는 HTTP 를 HTTPS 라고 한다. 포트는 80번이 아닌 443 번을 사용한다. HTTPS 는 TLS + HTTP 다.
링크
[AWS] DNS(Domain Name System) - 1
내용
사람이 읽을 수 있는 도메인 이름을 머신이 읽을 수 있는 IP 주소로 변환한다.
링크
[AWS] Nginx - 4
내용
클라이언트로부터 요청을 받았을 때 요청에 맞는 정적 파일을 응답해주는 HTTP Web Server 로 활용되기도 하고, Reverse Proxy Server 로 활용하여 WAS 서버의 부하를 줄일 수 있는 로드 밸런서로 활용되기도 하는 경량 웹 서버다.
Event-Driven 구조로 동작하기 때문에 한 개 또는 고정된 프로세스만 생성하여 사용하고, 비동기 방식으로 요청들을 Concurrency 하게 처리할 수 있다. Nginx 는 새로운 요청이 들어오더라도 새로운 프로세스와 쓰레드를 생성하지 않기 때문에 프로세스와 쓰레드 생성 비용이 존재하지 않고, 적은 자원으로도 효율적인 운용이 가능하다. 이러한 장점 덕에 단일 서버에서도 동시에 많은 연결을 처리할 수 있다.