들어가기 앞서 . . .
전 포스팅에서 배포한 서비스에 도메인을 연결하여 IP주소가 아닌 도메인으로 배포된 웹사이트를 확인할 수 있었다.
이제 HTTPS를 연결해야한다. HTTPS를 연결하기 전에 HTTPS의 기초지식과, 왜 HTTPS를 사용해야하는 지 알아보자.
AWS ELB(Elastic Load Balancer)
ELB(Elastic Load Balancer)란?
ELB란 한마디 요약해서 트래픽(부하)을 적절하게 분배해주는 장치이다.
이렇게 트래픽(부하)을 적절하게 분배해주는 장치를 전문적으로 로드밸런서(Load balancer)라고 부른다.
서버 2대 이상을 가용할 때 ELB를 필수적으로 도입하게 된다.
ELB를 활용한 아키텍처 구성
ELB 도입 전 아키텍처를 확인하자
전에 해오던 실습은 사용자가 EC2의 IP주소 또는 도메인 주소에 직접 요청을 보내고 응답을 받는 구조로 설계되어있었다.
ELB를 도입하게 되면 구조가 어떤식으로 변경될까?
ELB를 도입하게 되면 사용자는 EC2에 직접적으로 요청을 보내는 것이 아닌, ELB에 요청을 보내도록 구성된다.
ELB도 결국 하나의 컴퓨터이기때문에, ELB도 ELB 만의 IP 혹은 도메인을 가지게 된다.
왜 ELB를 도입해야할까?
왜 굳이 ELB를 도입해야할까?
나중에 EC2 서버가 늘어날 때 ELB가 요청을 서버에 나눠서 보내주기때문이다. 또 아래에 설명할 HTTPS를 사용하기 위함인데, ELB는 HTTPS를 사용하기 위한 SSL/TLS라는 기능을 제공하기 때문이다.
SSL/TLS
SSL/TLS란?
SSL/TLS란 HTTP를 HTTPS로 바꿔주는 인증서이다.
이러한 SSL/TLS는 위에서 언급한 ELB에서 제공한다. 즉, ELB는 SSL/TLS 인증서를 통해서 HTTP가 아닌 HTTPS로 통신할 수 있게 만들어준다.
HTTPS
왜 굳이 HTTP가 아닌 HTTPS를 사용해야할까?
왜 굳이 HTTP가 아닌 HTTPS를 사용해야하는걸까? HTTP와 HTTPS는 ‘암호화 유무’의 차이가 존재한다.
HTTP
HTTP(Hyper Text Transfer protocol)는 서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜이다.
인터넷에서 하이퍼텍스트를 교환하기 위한 통신 규약으로 80번 포트를 사용한다.
애플리케이션 레벨의 프로토콜로 TCP/IP 위에서 작동한다. 상태를 가지지 않는 stateless 프로토콜이며 method, header, body, path등으로 구성된다.
하지만 HTTP는 암호화 되지 않은 평문 데이터를 전송하는 프로토콜이기에, HTTP로 민감한 정보인 비밀번호나 주민등록번호를 주고 받을 시, 제 3자가 정보를 조회할 수 있다는 단점이 있었다.
그리고 이러한 문제를 해결하기 위해 HTTPS가 등장하였다.
HTTPS
HTTPS(Hyper Text Tranfer Protocol Secure)이란 HTTP에 Secure이라는 용어가 추가된걸로 예상이 가능하듯이, HTTP에 데이터 암호화가 추가된 프로토콜이다.
HTTPS는 443번 포트를 사용하며, 네트워크상에서 중간에 제 3자가 정보를 볼 수 없도록 암호화를 지원한다.
HTTPS는 대칭키 암호화와 비대칭키 암호화를 모두 사용하여 빠른 연산 속도와 안정성을 제공한다.
HTTPS 연결 과정에서 서버와 클라이언트 간에 세션키를 교환한다. 여기서 세션키는 주고 받는 데이터를 암호화하기 위해 사용되는 대칭키이며, 데이터 간의 교환에는 빠른 연산 속도가 필요하므로 세션키는 대칭키로 만들어진다.
이렇게 데이터를 암호화하기 위해 사용되는 세션키는 비대칭키를 통해 교환된다.
처음 연결을 성립하여 안전하게 세션키를 공유하는 과정에서 비대칭키가 사용되는 것이다.
HTTPS를 사용하는 이유
1. 보안적인 이유
위에서 언급했듯이, HTTPS는 데이터를 서버와 주고 받을 때 암호화를 시켜서 통신한다.
2. 사용자 이탈
HTTP와 같은 프로토콜을 사용할 시, 아래와 같이 경고가 뜨기 때문에 사용자가 이탈하는 경우가 잦다.
현업에서는 HTTPS를 사용할까?
현업에서 대부분의 웹 사이트는 HTTPS를 적용한다.
HTTPS 인증을 받은 웹 사이트가 백엔드 서버와 통신하려면, 백엔드 서버의 주소도 HTTPS 인증을 받아야 한다.
따라서 백엔드 서버와 통신할 때도 IP가 아닌 HTTPS 인증을 받은 도메인 주소로 통신을 한다.
주로 도메인을 구성할 때 아래와 같이 구성된다.
- 웹 사이트 주소 : https://jscode-edu.co.kr
- 백엔드 API 서버 주소 : https://api.jscode-edu.co.kr
HTTPS 연결 시, ELB vs Nginx, Cerbot
필자가 진행할 실습은 ELB를 통해서 HTTPS를 연결하고있다.
하지만 HTTPS 연결하는 방법을 검색해보면 ELB가 아닌 Nginx나 Cerbot을 사용하는 경우도 많이 볼 수 있다.
본론부터 말하자면 현업에서는 ELB 를 더 많이 사용한다.
ELB가 주는 장점이 뚜렷하기 때문이다.
- HTTPS 설정이 쉬움
- HTTPS 인증서의 만료 기간 갱신을 자동으로 해준다.
그러면 왜 ELB에 좋은 장점을 무시하고 Nginx, Cerbot을 사용하는 기업들이 있을까 ?
바로 “비용”때문이다.
Nginx와 Cerbot은 HTTPS를 적용하는 데 일절 비용이 들지 않는다. 반면 ELB는 사용하는 것 자체로 비용이 나간다.
따라서 비용이 부담스러운 기업이나 학생 입장에서는 ELB가 아닌 백엔드 서버와 Nginx를 하나의 EC2에 설치해서 사용하는 경우도 많다.
마무리하며
처음엔 용어들이 너무 낯설고 어렵게 느껴졌는데, 하나하나 개념을 정리해보니까 왜 HTTPS가 중요한지, 그리고 왜 ELB를 써야 하는지도 확실히 감이 잡혔다.
ELB를 이용하면 HTTPS 설정이 훨씬 편하고 자동 갱신까지 된다는 점이 진짜 매력적이긴 한데…
역시 AWS는 뭐든 다 비용이 들어간다는 점은 함정이다.
그래도 직접 설정하면서 HTTPS로 내 서버에 접속해보니까 "와 진짜 실서비스 같다는 기분도 들고, 또 한 단계 성장한 느낌!
다음 포스팅에서는 이제 본격적으로 ELB를 만들어서 HTTPS 연결하는 실습을 다뤄볼 예정이다.
'AWS' 카테고리의 다른 글
[AWS] HTTPS 적용하기 (1) | 2025.06.07 |
---|---|
[AWS] ELB 배포한 Spring Boot 서버와 연결하기 (0) | 2025.06.06 |
[AWS] ELB 셋팅하기 (0) | 2025.06.06 |
[AWS]AWS EC2 설정하기 (0) | 2025.02.14 |
[AWS] AWS EC2 기초지식 (0) | 2025.02.13 |