목차
1. 비유로 알아보는 Proxy
2. Proxy의 정의와 종류
3. Amazon RDS Proxy 알아보기
1. 비유로 알아보는 Proxy
Let's say you want a toy from the store, but you're too little to go there by yourself. So, you ask your older sibling or parent to go and get the toy for you. They become your "proxy" and bring the toy back to you. They do the job on your behalf because you couldn't do it directly.
- 꼬마 아이가 가게에서 장난감을 원하지만, 너무 어려서 혼자서 갈 수 없는 상황을 가정해보자.
- 꼬마 아이는 자신의 형제나 부모님에게 장난감을 사오길 바란다.
- 형제 혹은 부모님이 꼬마 아이의 "프록시"가 되며, 꼬마 아이를 위해 장난감을 사온다.
- 프록시는 당신이 직접 할 수 없는 것에 대해 당신을 대표하여 일을 하는 것이다.
In the same way, on the internet, a "proxy" works like your magical friend. When you want to see a website or do something online, you send a request, but instead of going directly to the website, the request goes to the proxy first. The proxy then acts on your behalf, fetches the website or does the task, and brings the results back to you.
- 같은 방식으로, 인터넷에서의 프록시는 마법사 친구처럼 동작한다.
- 당신이 웹 사이트를 보거나 온라인에서 무엇인가 하고 싶을 때, 요청을 보내는데 웹 사이트에 직접 보내는 것 대신, 요청은 프록시에게 먼저 간다.
- 당신을 대표하여 동작해서, 웹 사이트를 가져오거나 작업을 수행한 결과를 당신에게 가져온다.
2. Proxy의 정의와 종류
1. Proxy for an Engineer:
In networking and computer systems, a proxy is an intermediary server or software that acts on behalf of clients to provide specific services. When a client (such as a user's computer) requests resources (like a web page, file, or data) from another server, the request is first sent to the proxy server. The proxy server then forwards the request to the destination server, retrieves the response, and sends it back to the client.
- 네트워킹과 컴퓨터 체계에서 프록시는 중간 서버(중개인) 혹은, 특정한 서비스를 제공하기 위해 클라이언트를 대표하여 동작하는 소프트웨어다.
- (사용자의 컴퓨터 같은) 클라이언트는 (웹 페이지, 파일 혹은 데이터 같은) 자원을 다른 서버에 요청할 때, 그 요청은 프록시 서버에 먼저 간다.
- 프록시 서버는 목적지 서버로 그 요청을 보내고, 응답을 받아서 클라이언트에게 되돌려준다.
2. Types of Proxies:
There are different types of proxies based on their functionality:
a. **Forward Proxy:**
A forward proxy (also known as a web proxy) sits between the client and the internet. It serves as an intermediary for client requests going out to the web. When the client requests a web page, the forward proxy fetches it from the web server and then delivers it to the client. This type of proxy is commonly used for purposes like caching, filtering content, or hiding the client's IP address.
- 프록시는 두 가지 방식이 있다.
- (웹 프록시로 알려진) 정방향 프록시는 클라이언트와 인터넷 사이에 위치한다.
- 웹으로 나가는 클라이언트 요청을 위해 중개인으로서 동작한다.
- 클라이언트가 웹 페이지를 요청할 때, 정방향 프록시는 웹 서버로부터 웹 페이지를 가져오고 난 뒤 클라이언트에게 전달한다.
- 정방향 프록시는 캐싱, 콘텐츠 필터링, 클라이언트 IP 주소를 감추는 것 같은 목적에 사용된다.
b. **Reverse Proxy:**
A reverse proxy, on the other hand, stands between the internet and the server. It acts as the face of the server for clients on the internet. When clients send requests to access a website hosted on a server, the reverse proxy intercepts those requests. It then forwards the requests to the appropriate backend server that actually hosts the website. Reverse proxies are commonly used for load balancing, SSL termination, and protecting the backend server from direct exposure to the internet.
- 역방향 프록시는 인터넷과 서버의 사이에 위치한다.
- 인터넷 상에 있는 클라이언트를 위한 서버의 얼굴처럼 동작한다.
- 클라이언트가 서버에 호스팅된 웹 페이지에 접속하기 위한 요청을 보낼 때, 역방향 프록시는 그 요청을 가로챈다.
- 그리고, 실제로 웹 페이지를 호스팅하고 있는 적절한 백엔드 서버에 요청을 전달한다.
- 역방향 프록시는 보통 로드밸런싱, SSL Termination*, 그리고 서버가 인터넷에 직접 노출되는 것을 막기 위한 목적으로 사용된다.
* SSL Termination - SSL로 암호화된 데이터를 해독하는 프로세스
참고 : https://sepiros.tistory.com/50
3. Reasons for Using Proxies:
- **Security:** Proxies can enhance security by acting as a buffer between the client and the internet. They can help protect the client's identity and network from potential threats, such as Denial of Service (DoS) attacks or malicious content.
- 보안 : 프록시는 클라이언트와 인터넷 사이에서 버퍼처럼 동작하여 보안을 강화할 수 있다.
- 클라이언트의 정체와 DoS 공격과 악의적인 컨텐츠와 같은 잠재 위협으로부터의 네트워크를 보호할 수 있다.
- **Privacy and Anonymity:** Proxies can hide the client's IP address, making it harder for websites to track users and providing a level of anonymity while browsing the web.
- 사생활과 익명성 : 프록시는 유저 트랙킹을 어렵게하고, 웹 브라우징을 하는 동안 익명성을 제공하여 클라이언트의 IP 주소를 숨길 수 있다.
- **Content Filtering:** Organizations can use proxies to control access to specific content by filtering requests and responses. This helps enforce policies and restrict access to certain websites or resources.
- 콘텐츠 필터링 : 조직(기업)은 요청과 응답을 필터링하여 특정한 콘텐츠로의 접속을 통제하기 위해 프록시를 사용한다.
- 정책을 강화하고 특정 웹 사이트나 자원으로의 접근을 제한할 수 있다.
- **Caching and Performance:** Proxies can cache frequently requested resources, such as web pages and images. When a client requests the same resource again, the proxy can serve it from the cache, reducing the load on the destination server and improving performance.
- 캐싱과 성능 : 프록시는 빈번히 요청되는 자원, 웹 페이지나 이미지를 캐싱할 수 있다.
- 클라이언트가 같은 자원을 다시 요청할 때, 프록시는 캐시로부터 가져와 전달한다. 이러한 장점으로 목적지 서버의 부하를 줄이고 성능을 높힐 수 있다.
- **Load Balancing:** Reverse proxies often handle load balancing across multiple backend servers. They distribute client requests among several servers to ensure better resource utilization and prevent overloading a single server.
- 로드 밸런싱 : 역방향 프록시는 종종 다수의 백엔드 서버로의 로드밸런싱을 조절한다.
- 자원을 효율적으로 활용하는 방법을 정하고 단일 서버의 부하를 방지하기 위해 다수의 서버로 클라이언트 요청을 분산한다.
3. Amazon RDS Proxy 알아보기
Amazon RDS Proxy is a service provided by Amazon Web Services (AWS) that acts as an intermediary between your application and your Amazon Relational Database Service (Amazon RDS) instances. It helps improve the scalability, availability, and manageability of your RDS databases when dealing with high levels of traffic or connection requests.
- Amazon RDS Proxy는 어플리케이션과 Amazon RDS 인스턴스 사이에서 중개인으로 동작하는 AWS 제공 서비스다.
- 대량의 트래픽이나 연결 요청을 처리할 때, RDS 데이터베이스의 확장성, 가용성, 관리성을 향상시키는데 도움이 된다.
Let's break down the key aspects of Amazon RDS Proxy:
1. **Scalability:** When your application experiences a sudden increase in database connections or traffic, it can put a strain on the database and impact its performance. Amazon RDS Proxy helps manage these spikes by pooling and sharing database connections. This means that instead of each application instance opening its own connection to the database, they all use connections provided by the proxy. The proxy efficiently manages these connections, reducing the overall number of connections and improving database scalability.
- 확장성 : 데이터베이스로의 연결이나 트래픽의 갑작스러운 증가를 겪으면, 데이터베이스에 부담을 주고 성능에 영향을 끼친다.
- Amazon RDS 프록시는 데이터베이스의 연결을 풀링하고 공유하면서 이러한 급증을 관리하는데 도움을 준다.
- 각각의 어플리케이션이 데이터베이스로의 연결을 오픈하는 것 대신, 프록시가 제공하는 연결을 사용한다.
- 프록시는 이러한 연결을 효율적으로 관리하면서, 전체적인 연결의 수를 줄이고 데이터베이스의 확장성을 향상시킨다.
2. **Connection Pooling:** Connection pooling is a technique where a group of database connections is created in advance and then reused as needed. RDS Proxy maintains a pool of established connections to your RDS database, and when your application needs to interact with the database, it can use an available connection from the pool. This reduces the overhead of creating and tearing down connections for each request, making the application more efficient.
- 커넥션 풀링 : 하나의 데이터베이스 커넥션의 그룹이 미리 생성되고 필요할 때 재사용되는 기술이다.
- RDS 프록시는 RDS 데이터베이스로의 성립된 커넥션 풀링을 유지하고, 어플리케이션이 데이터베이스와 통신이 필요할 때, 풀로부터 사용가능한 커넥션을 사용할 수 있다.
- 각 요청에 따른 커넥션 생성/폐기의 부하를 줄이면서, 어플리케이션을 더 효율적으로 사용할 수 있게 한다.
3. **High Availability:** RDS Proxy enhances the high availability of your database by automatically handling failovers. If the primary RDS instance becomes unavailable due to maintenance or any other reason, RDS Proxy can quickly redirect the application's connections to a healthy replica without requiring any changes to the application. This ensures that your application stays connected to the database and experiences minimal downtime.
- 고가용성 : RDS 프록시는 failover를 자동으로 관리함으로써 데이터베이스의 고가용성을 강화시킨다.
- 만약, 주요 RDS 인스턴스가 유지보수나 다른 이유로 사용할 수 없는 상태가 된다면, RDS 프록시는 어플리케이션의 커넥션을 건강한 복제본으로 리다이렉션한다. 이때 어플리케이션에게 다른 변경사항을 요구하지 않는다.
- 어플리케이션이 데이터베이스로의 연결을 지속하고 최소한의 다운타임을 보장한다.
4. **Security:** RDS Proxy supports IAM (Identity and Access Management) authentication, allowing you to manage database access using IAM roles. This provides an additional layer of security and makes it easier to control who can access the database.
- 보안 : RDS 프록시는 IAM 인증을 지원하기 때문에, IAM role을 사용하여 데이터베이스 접근을 관리할 수 있다.
- 보안을 제공하여 데이터페이스에 접근하는 인원이 더 쉽제 통제할 수 있다.
5. **Query Caching (Optional):** RDS Proxy can also cache frequent read-only queries, which further reduces the database load and improves query response times. This feature is optional and can be configured based on the needs of your application.
- 쿼리 캐싱(선택) : RDS 프록시는 또한 읽기 전용 쿼리를 캐싱할 수 있다. 데이터베이스의 부하를 줄이고 쿼리 반응 시간을 향상시킬 수 있다.
- 이 특징은 선택할 수 있어서 어플리케이션에 선택에 따라 설정할 수 있다.
In summary, Amazon RDS Proxy is a powerful AWS service that simplifies the management of database connections, improves scalability, enhances high availability, and provides additional security features for your Amazon RDS instances. It's especially useful for applications with varying levels of database traffic, as it optimizes connection handling and helps maintain a smooth and efficient user experience.
- 요약하자면, Amazon RDS 프록시는 데이터베이스 커넥션 관리를 간단하게 만들어주고, 확장성을 향상시키며, 고가용성을 강화하고, Amazon RDS 인스턴스에 추가적인 보안을 제공하는 특징을 가지고 있다.
- 커넥션을 최적화하고 부드럽고 효율적인 유저 경험을 관리하기 때문에 다양한 수준의 데이터베이스 트래픽을 처리하는 어플리케이션에 특히 유용하다.
'IT > Cloud' 카테고리의 다른 글
[AWS SAA-C03] 2주만에 SAA-C03 취득하기 [결국 공부를 해야한다] (0) | 2023.08.04 |
---|---|
[AWS SAA-C03] 개념 정리 및 덤프 정리 [영문] (0) | 2023.08.01 |
[AWS SAA-C03] Amazon S3 Versioning 알아보기 [GPT에게 물어보다] (0) | 2023.07.25 |
[AWS SAA-C03] Amazon EBS과 Amazon EFS 차이점 [GPT에게 물어보다] (0) | 2023.07.23 |
[AWS SAA-C03] Amazon SQS와 Amazon SNS 차이점 [GPT에게 물어보다] (0) | 2023.07.23 |