프로그래밍에 있어 운영 전략이란, 프로젝트를 효율적으로 관리하기 위해 적용할 수 있는 전략을 의미한다.
❯ 프록시 서버(Proxy Server)
Proxy는 '대리'라는 뜻을 가진다. 프록시 서버는 클라이언트와 서버가 소통할 때 자신을 통해서 소통할 수 있도록 해주는 일종의 대리 서버이다. 크게 두가지 종류로 나뉜다.
Forward Proxy
클라이언트 가까이에 위치한 프록시 서버로 클라이언트를 대신해서 서버에 요청을 전달한다.
캐싱을 제공해서 서비스를 빠르게 이용할 수 있도록 해준다.
캐싱: 첫 응답 결과를 캐시에 저장해놓고, 여러 클라이언트가 동일한 요청을 보내는 경우 해당 내용을 클라이언트에게 리턴해줌
프록시 서버를 거친 후 서버에 요청이 도달하므로 서버가 클라이언트 IP를 추적할 수 없다.
Reverse Proxy
서버 가까이에 위치한 프록시 서버로 서버를 대신해서 클라이언트에게 응답을 전달한다.
로드밸런서가 대표적인 reverse proxy이며 들어온 요청을 여러대의 서버에 적절하게 나누어 전달하여 처리할 수 있다.
로드밸런서는 Scale-Out 방식(서버 개수를 늘려 서버 부하를 분산시키는 방법)을 사용하며 여러 요청을 서버에 적절하게 분배하는 역할을 한다. 클라이언트 요청을 어떤 기준으로 분산시키는지에 따라 네가지(L2, L3, L4, L7)로 구분된다.
프록시 서버를 통해 리턴 결과가 클라이언트에게 전달되므로 실제 서버 IP가 노출되지 않는다.
❯ 웹 애플리케이션 서버(Web Application Server)
웹 애플리케이션 서버는 동적인 웹 애플리케이션의 실행 환경을 제공한다. 대표적으로 Tomcat과 Jetty가 있다.
Tomcat
Apache사에서 개발한 오픈소스 웹 애플리케이션 서버이다.
자바 서블릿 컨테이너의 공식 구현체이며 Spring Boot의 내장 서버로 별도의 설치과정이 필요하지 않다.
Jetty
이클립스 재단의 HTTP 서버이자 자바 서블릿 컨테이너이다.
비교적 적은 메모리를 사용하고 애플리케이션에 내장이 가능하므로 소형 장비, 소규모 프로그램에 적합하다.
❯ 웹 서버(Web Server)
클라이언트의 요청을 받아 적절한 응답을 해주는 서버로 정적 리소스를 빠르게 응답해줄 수 있는 웹 서버이다. 대표적으로 Nginx가 있다.
NginX
클라이언트에게 정적 리소스를 빠르게 응답하기 위한 웹서버로 사용할 수 있다.
비동기 이벤트를 기반으로 적은 자원을 사용해 높은 성능과 높은 동시성을 가진다.
다수의 클라이언트 연결을 효율적으로 처리할 수 있고 리버스 프록시 서버로 사용 가능하다.
오늘로써 이론 수업은 끝이 났다. 약 4개월이 어떻게 지나갔는지도 모를만큼 빠르게 지나갔다.
이제부터는 본격적인 프로젝트가 시작된다. 무사히 완성할 수 있기를!
+ 주말동안 정보처리기사 필기 시험을 보고 왔다. 기출문제만 몇회 풀어보고 갔는데 무난하게 통과할 수 있었다.
생각보다 부트캠프 과정동안 배운 내용이 많이 포함되어있어서 기초부터 차근차근 하고 있구나 하는 생각이 들었다ㅎㅎ
실기가 훨씬 어렵다고 하는데, 일단 프로젝트 기간동안은 거기에 집중하고 나중에 다시 차근차근 진행해봐야겠다!
'부트캠프 개발일기 > Cloud' 카테고리의 다른 글
76일차: Github Actions (0) | 2023.06.01 |
---|---|
75일차: AWS 배포 자동화(Automated Deployment) (0) | 2023.05.31 |
74일차: Docker (0) | 2023.05.30 |
73일차: 3 Tier Architecture 배포 실습 (0) | 2023.05.26 |
72일차: 배포(AWS) (0) | 2023.05.25 |