📍 What is a Web Application?
📍 Web
- 인터넷에 연결된 사용자들이 서로의 정보를 공유할 수 있는 공간
📍 HTTP
- Hypertext Transfer Protocol : 클라이언트와 서버 간 통신을 위한 통신 규칙 세트 또는 프로토콜
- HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜
- HTTP는 OSI 네트워크 통신 모델의 애플리케이션 계층의 프로토콜
- 기본 포트 : 80
📍 HTTPS
- Hypertext Transfer Protocol Secure : HTTP의 확장 버전
- HTTP는 암호화되지 않은 데이터를 전송. 그렇기 때문에 또 다른 보안 계층을 추가하기 위해 HTTPS로 확장.
- HTTP 요청 및 응답을 SSL 및 TLS 기술에 결합
- 검색 엔진은 HTTP의 신뢰성이 더 낮기 때문에 보통 HTTP 웹 사이트 콘텐츠의 순위를 HTTPS 웹 페이지보다 낮게 지정
- 기본 포트 : 443
📍웹 구조

출처 : TIL - 웹의 구조
(1) Web Client에서 Domain 주소에 대한 요청을 DNS로 날림
(2) DNS에서 해당 도메인 주소에 대한 IP 주소 리턴
(3) 해당 IP 주소로 index.html 요청 보냄
(4) index.html 응답
DNS
- 사람이 읽을 수 있는 도메인 이름을 머신이 읽을 수 있는 IP 주소로 변환하는 것
Web Server
- 클라이언트의 요청에 따라 HTML, CSS, JS 이미지 파일과 같은 정적 파일을 응답하여 제공하는 소프트웨어
- 단순히 저장된 웹 리소스들을 클라이언트로 전달, 클라이언트로부터 콘텐츠를 전달 받아 저장하거나 처리
- 동적인 요청이 들어왔을 때, 해당 요청을 WAS로 전달
- Nginx, Apache
WAS (Web Application Server)
- 클라이언트 요청에 대한 동적인 처리를 담당
- 웹 서버가 할 수 있는 기능 대부분이 WAS에서도 처리 가능, 비즈니스 로직을 처리할 수 있어 사용자에게 동적인 콘텐츠 전달 가능
- Tomcat, JEUS
❓ WAS가 WS의 일도 처리할 수 있다면 굳이 WS가 필요한가?
=> WAS는 DB 조회 및 다양한 로직을 처리하는데 집중해야함. 따라서 단순한 정적 콘텐츠는 웹 서버에게 맡기고, 기능을 분리해 서버 부하를 방지해야함.
출처 : https://yozm.wishket.com/magazine/detail/1780/
https://aws.amazon.com/ko/compare/the-difference-between-https-and-http/
AWS Route53
- 가용성과 확장성이 뛰어난 DNS
- 도메인 구매 및 관리 가능
- 사용한 내역에 대해서만 지불
- simple routing/failover routing
- Simple Routing의 경우 Load Balancer/CloudFront등과 연결할 수 있었음
- FailOver Routing의 경우 Primary/Secondary로 나뉨. Primary는 AWS의 서비스, Secondary는 GCP의 로드밸런서 IP주소와 연결. 장애 발생 시, 자동 전환되는 것 확인. (단, VPC 피어링이 되어있어야 함)
AWS CloudFront
- 빠르고 안전한 프로그래밍 가능한 콘텐츠 전송 네트워크. 전세계적으로 CloudFront의 엣지 로케이션에서 HTTPS를 통해 콘텐츠를 안전하게 전송할 수 있음.
- CDN 서비스 (Content Delivery Network) : 전 세계에 분산된 서버 네트워크, 빠르고 효율적으로 콘텐츠를 전달하기 위해 만들어짐. 정적 콘텐츠를 사용자와 물리적으로 가까운 위치에서 제공하여 로딩 시간 단축, 서버 과부화 방지.
- CDN 서비스 장점 : 페이지 로드 시간 단축, 대역폭 비용 절감, 콘텐츠 가용성 제고, 웹 사이트 보안 강화(DDoS 공격 방지)
- S3와 연결하여 사용하여 콘텐츠를 보호할 수 있음
- CloudFront 캐싱은 오리진 서버에서 직접 응답해야 하는 요청의 수를 줄임. 요청을 뷰어의 위치와 가까운 엣지 로케이션으로 라우팅, 해당 캐시에서 콘텐츠를 제공, 아직 캐싱되지 않은 경우에만 S3 버킷에서 검색.
- 따라서 S3에 업데이트가 있다고 하더라도 자동 반영이 되지 않음. 캐시 무효화하고 진행하면 OK.
https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/tutorial-s3-cloudfront-route53-video-streaming.html#cf-s3-step1
ACM
- AWS 웹사이트와 애플리케이션을 보호하는 퍼블릭 및 프라이빗 SSL/TLS 인증서와 키를 만들고, 저장하고, 갱신하는 복잡성 처리
- ACM에서 직접 발급하거나 서드 파티 인증서를 ACM 관리 시스템으로 가져오는 방법. 통합 AWS 서비스에 대한 인증서를 제공 가능.
SSL
- Secure Sockets Layer : 웹 사이트와 브라우저 간의 데이터를 암호화하여 인터넷을 연결을 보호하는 기술
- AWS에서는 Route53에서 도메인을 구매하고 ACM을 사용하면 됨
- 그 외의 무료 제공처 : Let's encrypt