Post

2024-09-10-TIL

2024-09-10-TIL

Today I Learned

NGINX vs Apache

Apache는 기존에 많이 사용되던 웹 서버 엔진이다. 예전에는 APM이라고 Apache, PHP, MySQL을 묶어서 부르기도 했고, 한 번에 설치해주는 도구도 있었다. (참고)

Apache는 process-driven 방식이며 요청 당 스레드를 생성하는 반면, NGINX는 높은 동시성을 위해 설계되었으며 싱글 스레드로 여러개의 요청을 처리하므로, 비교적 Event Driven Architecture에 적합하다.

NGINX for Frontend or Backend?

NGINX를 백엔드 서버로도 사용할 수 있을까?

NGINX는 백엔드 REST API 서버 자체로 사용되기보다는, 리버스 프록시, 로드 밸런서, 캐시 역할, 또는 보안 필터링을 통해 API 서버의 성능과 보안을 개선하는 데 가장 적합한 용도로 사용됩니다. powered by chatGPT

그러면 프론트 엔드 서버로 사용하는 것이 적합한가? 아니면 게이트웨이 or 리버스 프록시 역할을 하는게 더 적합한가?

NGINX는 프론트엔드 서버로도 적합하게 사용할 수 있지만, 주로 정적 파일 제공과 리버스 프록시 역할에 최적화되어 있습니다. 게이트웨이(리버스 프록시)로 사용할 때는 NGINX가 보안, 로드 밸런싱, API 요청 중계 등의 역할을 하면서 프론트엔드와 백엔드를 분리하여 관리할 수 있어, 더 복잡한 아키텍처에서 유용합니다. powered by chatGPT

NGINX를 포함한 프론드엔드와 백엔드 서버를 구성할 때 best practice를 그림으로 그려줘

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
+---------------------------+      +-----------------------------+
|     Frontend (Client)     |      |        Backend (Server)     |
+---------------------------+      +-----------------------------+
|                           |      |                             |
|  +---------------------+  |      |  +-----------------------+  |
|  |   Browser (Client)   | |      |  |   NGINX (Reverse Proxy)| |
|  +---------------------+  |      |  +-----------------------+  |
|                           |      |             |               |
|  +---------------------+  |      |             v               |
|  | NGINX (Static Files) | |      |    +-------------------+    |
|  |  (HTML, CSS, JS)     | |<--------->|   REST API Server |    |
|  +---------------------+  |      |    +-------------------+    |
|                           |      |             |               |
+---------------------------+      |             v               |
                                   |    +-------------------+    |
                                   |    |   Database Server  |   |
                                   |    +-------------------+    |
                                   |                             |
                                   +-----------------------------+

PlatformTransactionManager

Today I Read

This post is licensed under CC BY 4.0 by the author.