์ธํ”„๋ผ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ์›น ์ธํ„ฐํŽ˜์ด์Šค Polemarch 3.0 ์ถœ์‹œ

Ansible ๊ธฐ๋ฐ˜์˜ ์„œ๋ฒ„ ์ธํ”„๋ผ ๊ด€๋ฆฌ์šฉ ์›น ์ธํ„ฐํŽ˜์ด์Šค์ธ Polemarch 3.0.0์ด ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ๋Š” Django ๋ฐ Celery ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Python ๋ฐ JavaScript๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๋Š” AGPLv3 ๋ผ์ด์„ผ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ์„ ์‹œ์ž‘ํ•˜๋ ค๋ฉด ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์„œ๋น„์Šค 1๊ฐœ๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์‚ฐ์—…์šฉ์œผ๋กœ๋Š” MySQL/PostgreSQL, Redis/RabbitMQ+Redis(MQ ์บ์‹œ ๋ฐ ๋ธŒ๋กœ์ปค)๋ฅผ ์ถ”๊ฐ€๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ฐ ๋ฒ„์ „๋งˆ๋‹ค Docker ์ด๋ฏธ์ง€๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ :

  • Rest API v4์˜ ์ƒˆ ๋ฒ„์ „๊ณผ Python 3.8์˜ ์ตœ์†Œ ์ง€์› ๋ฒ„์ „์œผ๋กœ ์ „ํ™˜ํ•˜์„ธ์š”. ์ƒˆ๋กœ์šด ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ฐ ํ™•์žฅ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์ง€์›์„ ๊ฐœ์„ ํ•˜๊ณ  ๊ฐœ๋ฐœ ์†๋„๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด ์ „ํ™˜์ด ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ…œํ”Œ๋ฆฟ๊ณผ ์ผ์ •์„ ๋ณด๋‹ค ๋…ผ๋ฆฌ์ ์ด๊ณ  ์ง๊ด€์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์ผ๋ถ€ ์ค‘๋ณต ์š”์†Œ๋„ ๋‹จ์ˆœํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์Šคํฌ๋ฆฝํŠธ ๋˜๋Š” ini/yaml/json ๋ฌธ์ž์—ด๊ณผ ๊ฐ™์€ ํ‘œ์ค€ ์ธ๋ฒคํ† ๋ฆฌ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ƒˆ๋กœ์šด ์ธ๋ฒคํ† ๋ฆฌ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ธ๋ฒคํ† ๋ฆฌ ํ”Œ๋Ÿฌ๊ทธ์ธ ์‹œ์Šคํ…œ ์ž์ฒด๋„ ๊ฐœ๋ฐœ๋˜์–ด ๋‹ค์–‘ํ•œ ์†Œ์Šค์—์„œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ƒ์„ฑํ•˜๋Š” ์ž์ฒด ๊ตฌํ˜„์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ด์ „ ๋ฆด๋ฆฌ์Šค์—์„œ ์ถœ์‹œ๋œ ์‹คํ–‰ ํ”Œ๋Ÿฌ๊ทธ์ธ ์‹œ์Šคํ…œ์ด ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ bash ์Šคํฌ๋ฆฝํŠธ, terraform ๋˜๋Š” helm๊ณผ ๊ฐ™์€ ์ถ”๊ฐ€ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌํ˜„์„ ์ง์ ‘ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฆฌํŒฉํ† ๋ง์˜ ์ผํ™˜์œผ๋กœ ํ…œํ”Œ๋ฆฟ ๋ฐ ์ผ์ •์— ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ๋Š” ์ด์ œ ์ €์žฅ์†Œ์˜ ์˜ˆ๋น„ ์ดˆ๊ธฐํ™”๋ฅผ ์œ„ํ•œ ํ˜ธ์ถœ ์ฒด์ธ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ถœ๋ ฅ์—์„œ ๋‹ค์–‘ํ•œ ์ €์žฅ์†Œ๋กœ ๋ฌธ์ž์—ด์„ ์“ฐ๊ธฐ ์œ„ํ•œ ํ™•์žฅ ์‹œ์Šคํ…œ์ด ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์ถœ๋ ฅ์„ stdout, ํŒŒ์ผ ๋˜๋Š” syslog๋กœ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ธฐ๋ก ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ python-logger๊ฐ€ ์ฆ‰์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ์ด์ œ ๋ฉ”์‹œ์ง€ ๋Œ€๊ธฐ์—ด์ด ํ”ผํด ๋Œ€์‹  json ๋ฉ”์‹œ์ง€๋ฅผ ๊ตํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๊ธฐ์—ด๋กœ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ง๋ ฌํ™” ๋ฐ ์—ญ์ง๋ ฌํ™”ํ•˜๋Š” ์ž‘์—…๋„ ๊ฐ€์†ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ํ–ฅ์ƒ๋œ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์™€ Centrifugo์™€์˜ ์ž๋™ ์—…๋ฐ์ดํŠธ ํ†ตํ•ฉ์ด ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ํ•„์ˆ˜ ์ข…์†์„ฑ ๋ชฉ๋ก์„ ์ค„์ด๊ธฐ ์œ„ํ•ด Django์™€ ๊ฐ™์€ ์ฃผ์š” ์ข…์†์„ฑ์ด ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: ์บ์‹œ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ Redis ์ง€์›).

.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€