MSA 트레이닝 센터

NGINX Unit 앱 서버 - 멀티 애플리케이션 동시 실행

NGINX Unit 앱 서버 를 사용하면 개발자와 DevOps팀이 원하는 언어로 서비스를 개발하고 원하는 방식(선언적으로, 동적으로, 즉시)으로 배포하여 신속하게 배포할 수 있습니다. 동일한 애플리케이션 서버에서 다른 언어로 서비스를 실행하는 방법과 선언적으로 빠르게 배포하는 방법(UNIT 방식)을 알아보세요.

NGINX Unit 앱 서버 - 멀티 애플리케이션 동시 실행

NGINX Unit은 개발자와 DevOps 팀이 다양한 언어로 애플리케이션을 개발하고, 동적이고 선언적인 방식으로 배포할 수 있는 차세대 오픈소스 애플리케이션 서버입니다.

이 가이드는 NGINX Unit을 활용해 여러 애플리케이션을 동시에 실행하고, 효율적으로 관리하는 방법을 설명합니다. Python, Node.js, PHP 등 다양한 언어의 애플리케이션을 단일 서버에서 통합적으로 실행할 수 있습니다.

앱 서버 멀티 애플리케이션 구성

NGINX Unit의 RESTful API를 활용하여 여러 애플리케이션을 동시에 실행하도록 설정합니다. Python과 Node.js 애플리케이션을 예로 들어 설명합니다.

애플리케이션 준비

Python 애플리케이션 (python_app.py)

				
					from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return "Hello from Python!", 200

				
			

Node.js 애플리케이션 (node_app.js)

				
					const http = require('http');

const server = http.createServer((req, res) => {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello from Node.js!\n');
});

server.listen(3000, () => {
    console.log('Node.js server running on port 3000');
});

				
			

멀티 애플리케이션 설정

Python 애플리케이션 구성

				
					curl -X PUT --unix-socket /var/run/control.unit.sock \
-d '{
    "type": "python",
    "path": "/path/to/python_app",
    "module": "python_app"
}' http://localhost/config/applications/python_app

				
			

Node.js 애플리케이션 구성

				
					curl -X PUT --unix-socket /var/run/control.unit.sock \
-d '{
    "type": "external",
    "executable": "node",
    "arguments": ["/path/to/node_app.js"]
}' http://localhost/config/applications/node_app

				
			

라우팅 설정을 통해 애플리케이션별로 포트를 분리하여 트래픽을 라우팅합니다.

				
					curl -X PUT --unix-socket /var/run/control.unit.sock \
-d '{
    "listeners": {
        "*:8080": {
            "pass": "applications/python_app"
        },
        "*:8081": {
            "pass": "applications/node_app"
        }
    }
}' http://localhost/config

				
			

NGINX Unit 앱 서버 동작 확인

  • Python 애플리케이션 테스트
    브라우저 또는 curl 명령어를 사용하여 확인합니다.
				
					curl http://localhost:8080

				
			

출력: Hello from Python!

  • Node.js 애플리케이션 테스트
    브라우저 또는 curl 명령어를 사용하여 확인합니다.
				
					curl http://localhost:8081

				
			

출력: Hello from Node.js!

멀티 애플리케이션 관리 및 확장

NGINX Unit은 동적 구성을 지원하며, JSON 형식의 RESTful API를 통해 쉽게 설정을 변경할 수 있습니다.

애플리케이션 추가

새로운 애플리케이션을 추가하려면 아래 명령을 사용합니다. 예를 들어, PHP 애플리케이션을 추가하려면:

				
					curl -X PUT --unix-socket /var/run/control.unit.sock \
-d '{
    "type": "php",
    "root": "/path/to/php_app",
    "index": "index.php"
}' http://localhost/config/applications/php_app

				
			

애플리케이션 업데이트

애플리케이션의 환경 변수나 설정을 변경하려면 PATCH 요청을 사용합니다.

				
					curl -X PATCH --unix-socket /var/run/control.unit.sock \
-d '{
    "environment": {
        "DEBUG": "true"
    }
}' http://localhost/config/applications/python_app

				
			

애플리케이션 삭제

사용하지 않는 애플리케이션은 다음 명령으로 삭제할 수 있습니다.

				
					curl -X DELETE --unix-socket /var/run/control.unit.sock \
http://localhost/config/applications/node_app

				
			

Best Practices

  • 리소스 관리: 애플리케이션별로 리소스를 격리하여 효율적으로 사용합니다.
  • 보안 강화: 애플리케이션의 실행 경로를 제한하고 환경 변수를 설정하여 보안을 유지합니다.
  • 로깅 활성화: NGINX Unit 로그를 통해 애플리케이션 상태와 트래픽을 모니터링합니다.
  • 자동화 구성: RESTful API를 활용해 CI/CD 파이프라인과 통합하여 배포를 자동화합니다.

결론

NGINX Unit 앱 서버 - 멀티 애플리케이션 동시 실행

NGINX Unit은 단일 서버에서 다양한 언어로 작성된 애플리케이션을 동시 실행하고 관리할 수 있는 강력한 솔루션입니다. RESTful API를 사용한 유연한 설정과 동적 라우팅을 통해 DevOps 팀과 개발자는 더욱 빠르고 효율적으로 애플리케이션을 운영할 수 있습니다.

멀티 애플리케이션 환경에서 NGINX Unit의 강력한 기능을 활용하여 운영 효율성과 생산성을 극대화하기 위해 NGINX STORE에 문의하여 사용 사례에 맞는 NGINX Unit 활용 방법을 상담 받아보세요.