서버 환경 구축 시 결정해야 하는 것은 클라우드 서버, OS, WebServer, BL, DBMS 이다.
클라우드 서버 : AWS EC2 인스턴스
OS : Ubuntu 18.04.05 LTS
WebServer : Apache2, Nginx
BL : Spring, node.js, PHP
DBMS : MySQL
나는 위와 같은 사용 경험이 있다. 서로 사용 용도가 다르기 때문에 어느 것이 좋다고 쉽게 결정할 수는 없을 것이다.
하지만, 기록을 위해 나의 개인적인 사용 경험에 빗대어 말을 해볼 것이다.
WebServer
Apache
- MPM 방식으로 HTTP 요청을 처리
- PreFork MPM (다중 프로세스)
- Worker MPM (멀티 프로세스-스레드)
- 안정성, 확장성, 호환성이 좋다.
- 클라이언트 접속마다 Process 혹은 Thread 를 생성하는 구조, 대용량 요청에서 한계를 보인다.
Nginx
- Event-Driven 방식으로 동작
-성능이 우세
Apache에서는 철저히 계층구조를 따른다. nginx에서는 한줄이면 해결할 코드를 apache에서는 여러 파일들을 옮겨다니며 여러 줄을 수정해야하는 힘듦이 있다.
BackendLanguage
Spring (SpringBoot)
- 언어: java
- 안정성이 높고, 대부분의 기업에서 Spring을 채택하고 계속해서 사용하고 있다.
- BL의 계층구조를 철저히 따르고 다소 어렵다.
- 빠른 시간에 마스터하기 어렵다.
- 백엔드 개발자에게 필수적인 역량이다.(한국에서)
-기업에서 필요료 하는 라이브러리가 많이 구축이 되어있다.
Node.js
- 언어: javascript
- 대용량의 데이터를 한 번에 웹으로 불러올 수 있다.
- 접근성이 좋고 쉽다.
- 프론트엔드 개발자에게 접근이 쉽다.
spring을 몇 번 사용해본 적이 있는데, 그 때마다 개발환경 구축이 힘들었다. 특히, 로컬에서 하면 잘 동작될 기능을 서버에서 동작시켰을 때 나타나는 오류를 해결하기가 힘들었다.
후기
나는 지금까지 Apache2+Spring으로 운영하던 서버를 Nginx+Node.js로 바꾸었다.
나를 끊임없이 괴롭히던 오류들도 사라졌고, 세팅이 정말 편해졌다.
지금은 시간이 부족해서 익숙한 언어와 환경에서 서버를 구축하지만 다음에는 꼭 Spring을 이용해볼 것이다.
'👩💻 Web Programming > Web Server' 카테고리의 다른 글
nginx: [emerg] socket() [::]:80 failed (97: Address family not supported by protocol) 오류 (3) | 2021.06.30 |
---|---|
도커 네트워크 (0) | 2021.06.07 |
7. 웹서버 Redirection 적용 (IP to Domain) - Apache, Nginx (0) | 2021.03.29 |
6. Sub Domain 적용 (Dev, Prod) - Apache2 (0) | 2021.03.29 |
5. AWS에 Let's Encrypt로 HTTPS 적용 - Apache, Nginx (0) | 2021.03.29 |