Skip to content

๐Ÿณ MSA๋กœ ๊ตฌํ˜„ํ•œ ์ค‘๊ณ ๊ฑฐ๋ž˜์‚ฌ์ดํŠธ

Notifications You must be signed in to change notification settings

MinjiY/MSA-project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

3 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

MSA๋กœ ๊ตฌํ˜„ํ•œ ์ค‘๊ณ ๊ฑฐ๋ž˜ ์‚ฌ์ดํŠธ

๐Ÿ‘Š ํ”„๋กœ์ ํŠธ ๋ชฉํ‘œ

๊ทธ๋™์•ˆ์˜ ๊ต์œก ์ปค๋ฆฌํ˜๋Ÿผ(AWS, Docker, K8s, kafka, ansible ..)์„ ํ™œ์šฉํ•ด ์ง์ ‘ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•ด๋ณธ๋‹ค๋Š” ๊ฒƒ์— ์ง‘์ค‘ํ•œ๋‹ค. ์„œ๋น„์Šค์˜ ๊ตฌ์„ฑ์š”์†Œ๋Š” ๊ธฐ์กด์˜ ๋‹น๊ทผ๋งˆ์ผ“๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ๊ตฌํ˜„ํ•˜๋˜, ๊ฒ€์ƒ‰ ์„œ๋น„์Šค์— ๊ฐ•์ ์„ ๋‘์–ด ์ฐจ๋ณ„์„ฑ ์žˆ๋Š” Clone Project๋กœ ๊ฐœ๋ฐœํ•ด๋ณด๋ คํ•œ๋‹ค.

๐Ÿ™‹ ํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ์›

๐Ÿ“š ์š”๊ตฌ์‚ฌํ•ญ ๋ถ„์„

์‚ฌ์šฉ์ž ์š”๊ตฌ ์‚ฌํ•ญ ๋ฌธ์„œ

๐Ÿ—จ๏ธ Use Case Diagram

image-20210614051049313

๐Ÿ’ป Function

  1. ๋กœ๊ทธ์ธ/ํšŒ์›๊ฐ€์ž…
  2. ๊ฑฐ๋ž˜
  3. ๋Œ“๊ธ€
  4. ๊ฒ€์ƒ‰์—”์ง„(Elasticsearch), ์ธ๊ธฐ ๊ฒ€์ƒ‰์–ด/์ถ”์ฒœ ์„œ๋น„์Šค(ELK)

๐Ÿ–ฅ๏ธ Tech Stack

image-20210613205829656

  1. Django Framework: ๊ฐœ๋ฐœ ๊ธฐ๊ฐ„์ด ์งง์•„ ๋ฐ”๋กœ ๊ฐœ๋ฐœ์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” Django๋ฅผ ์„ ํƒํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ค‘๋Ÿ‰ ํ”„๋ ˆ์ž„์›Œํฌ์ธ Django๋Š” API ์ƒ์„ฑ ๋ฐ ํ†ต์‹  ์ธก๋ฉด์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ๊นŒ๋‹ค๋กœ์› ๋‹ค. ๊ฐœ์„ ์ ์œผ๋กœ์„œ Flaks ์‚ฌ์šฉ, ๋˜๋Š” Spring Framework๋ฅผ ์‚ฌ์šฉํ•ด MSA๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  Spring Cloud๋ฅผ ์ถ”๊ฐ€ํ•ด๋ณด๋Š” ๊ฒƒ๋„ ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.
  2. Kafka: ์šฉ๋„์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ„ ๋™๊ธฐํ™”๋ฅผ ์œ„ํ•ด Kafka๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. ํ˜„์žฌ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๋งค๋ฌผ ์กฐํšŒ๊ฐ€ ๋นˆ๋ฒˆํ•˜๊ฒŒ ๋ฐœ์ƒํ•  ๊ฒƒ์„ ์˜ˆ์ƒ, ์กฐํšŒDB์™€ ๋“ฑ๋ก, ์ˆ˜์ •, ์‚ญ์ œ ์šฉ๋„์˜ DB๋ฅผ ๋‚˜๋ˆ„์–ด ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ค„์˜€๊ณ  ๋ถ„๋ฆฌ๋œ DB ๋™๊ธฐํ™”๋ฅผ ์œ„ํ•ด MQ๋กœ์„œ Kafka๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. MQ์—๋Š” ๋Œ€ํ‘œ์ ์œผ๋กœ Kafka์™€ RabbitMQ, ActivaMQ๊ฐ€ ์žˆ์œผ๋‚˜ ๊ต์œก์„ ํ†ตํ•ด ๋ฐฐ์šด ๊ฒƒ์€ Kafka์ด๊ณ  ๊ทธ๋™์•ˆ์˜ ์ปค๋ฆฌํ˜๋Ÿผ์„ ํ™œ์šฉํ•ด ์ง์ ‘ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•ด๋ณธ๋‹ค๋Š” ๊ฒƒ์— ์ง‘์ค‘ํ•˜๊ธฐ ์œ„ํ•ด Kafka๋ฅผ ์„ ํƒํ–ˆ๋‹ค.
  3. ELK(ElasticSearch + Logstash + Kibana): ๋กœ๊ทธ ์ˆ˜์ง‘ ํ”Œ๋žซํผ์œผ๋กœ ELK์Šคํƒ์ด ๋งŽ์ด ์•Œ๋ ค์ ธ์žˆ๋‹ค. ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์‚ฌ์šฉ์ž์˜ ๊ฒ€์ƒ‰ ํŒจํ„ด ๋ถ„์„์„ ์œ„ํ•ด ELK ์‚ฌ์šฉ์„ ๊ณ„ํšํ–ˆ๋‹ค.
  4. Consul: Service Discovery๋กœ Consul์„ ์‚ฌ์šฉํ–ˆ๋‹ค. ์„œ๋น„์Šค๋“ค์˜ ์ •๋ณด(IP, PORT)๋ฅผ ์ •์˜ํ•ด๋‘๊ณ  ๊ฐ ์„œ๋น„์Šค๋“ค์ด Consul์— ์ •๋ณด๋ฅผ ์š”์ฒญํ•ด์„œ ํ†ต์‹ ํ•˜๋„๋ก ๊ตฌ์„ฑํ–ˆ๋‹ค.
  5. Docker: ๋กœ์ปฌํ™˜๊ฒฝ์—์„œ Bridge-Network๋ฅผ ๊ตฌ์„ฑํ•ด ๊ฐ ์„œ๋น„์Šค๋“ค์„ ๋„คํŠธ์›Œํฌ ๋‚ด์—์„œ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑํ–ˆ๋‹ค.

๐Ÿฌ Docker Network

image-20210614044642875

  • ํ”„๋กœ์ ํŠธ์—์„œ ๊ตฌํ˜„ํ•œ Docker Network ๊ตฌ์กฐ

  • physical network interface์ธ eth0์— msa-network๋ผ๋Š” bridge ์ƒ์„ฑ

  • msa-network๋ผ๋Š” bridge๋Š” virtual network interface์ธ veth0~veth7์™€ 172.17.0.0/24๋กœ ๊ฐ™์€ ๋„คํŠธ์›Œํฌ์— ๋ฌถ์Œ

  • msa-network 172.17.0.0.1์€ veth0~veth7์˜ default gateway ์—ญํ• ์„ ํ•œ๋‹ค.

  • k8s Pod๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ์œ„ํ•ด docker-network ๊ตฌ์กฐ๋Š” ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ด์„œ ์ •๋ฆฌํ–ˆ๋‹ค.

โš™๏ธ ์‹œ์Šคํ…œ ๊ตฌ์„ฑ๋„

image-20210614045947863

๐Ÿ”Š ๊ฐœ์„ ์ 

  1. Flask๋กœ ํŽ˜์ด์ง€ ์ˆ˜์ •
  2. ์œ„์น˜ ๊ธฐ๋ฐ˜ ๋งˆ์ผ“ ๊ตฌํ˜„์„ ์œ„ํ•ด MAP API ์‚ฌ์šฉ
  3. No-SQL ์‚ฌ์šฉ ๊ฒฝํ—˜์„ ์œ„ํ•ด ํŒ๋งค์ž, ๊ตฌ๋งค์ž ์ฑ„ํŒ…๊ธฐ๋Šฅ ๊ตฌํ˜„
  4. AWS, GCP์™€ ๊ฐ™์€ ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ์œผ๋กœ์˜ ์„œ๋น„์Šค ๋ฐฐํฌ
  5. k8s๋กœ ์ปจํ…Œ์ด๋„ˆ ๊ด€๋ฆฌ
  6. ELK vs EFK : ๊ฒ€์ƒ‰ ์„œ๋น„์Šค๋ฅผ ์œ„ํ•ด ELK๋ฅผ ๊ณ„ํšํ–ˆ์œผ๋ฏ€๋กœ ์„œ๋ฒ„ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์œ„ํ•ด์„œ๋Š” EFK(ElasticSearch + Fluentd + Kibana)๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๋Š” ๊ฒƒ๋„ ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.

๐Ÿ“˜ DB์„ค๊ณ„

User Table

image-20210614050650706

Item Table

image-20210614050718367

Sold_Item Table

image-20210614050743420

Comment Table

image-20210614050803371

ERD

image-20210614050830059

About

๐Ÿณ MSA๋กœ ๊ตฌํ˜„ํ•œ ์ค‘๊ณ ๊ฑฐ๋ž˜์‚ฌ์ดํŠธ

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published