Skip to content

Latest commit

ย 

History

History
154 lines (136 loc) ยท 7.86 KB

File metadata and controls

154 lines (136 loc) ยท 7.86 KB

Infra Structure

์„œ๋ฒ„ ํ™˜๊ฒฝ



  • ๐Ÿ’ปTest : develop ๋ธŒ๋Ÿฐ์น˜๊ฐ€ ๋ฐ˜์˜๋˜๋Š” ์„œ๋ฒ„์ด๋‹ค. api, admin, batch, chat ์„œ๋ฒ„๊ฐ€ ๋„์ปค๋กœ ๋นŒ๋“œ๋˜์–ด ์žˆ๋‹ค.
  • ๐Ÿ’ปProduction : production ๋ธŒ๋Ÿฐ์น˜๊ฐ€ ๋ฐ˜์˜๋˜๋Š” ์„œ๋ฒ„์ด๋‹ค. api, batch, chat ์„œ๋ฒ„๊ฐ€ ๋„์ปค๋กœ ๋นŒ๋“œ๋˜์–ด ์žˆ๋‹ค.
  • ๐Ÿ’ปAdmin : production ๋ธŒ๋Ÿฐ์น˜๊ฐ€ ๋ฐ˜์˜๋˜๋Š” ์„œ๋ฒ„์ด๋‹ค. admin ์„œ๋ฒ„๊ฐ€ ๋„์ปค๋กœ ๋นŒ๋“œ๋˜์–ด ์žˆ๋‹ค.
  • ๐Ÿ’ปJenkins : ํ…Œ์ŠคํŠธ ๋ฐ ํ”„๋กœ๋•์…˜ ์„œ๋ฒ„๋ฅผ ๋ฐฐํฌํ•˜๊ธฐ ์œ„ํ•œ ๋นŒ๋“œ ์„œ๋ฒ„์ด๋‹ค. ํ”„๋กœ์ ํŠธ ๋ ˆ๋ฒจ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์ถ”๊ฐ€ ๋ฐ ์ˆ˜์ • ์‹œ ํ•ด๋‹น ์„œ๋ฒ„์— ์œ„์น˜ํ•œ resource ํŒŒ์ผ์„ ์ˆ˜์ •ํ•ด์•ผ ํ•œ๋‹ค.

Project

Language & Framework

  • Java 11
  • Spring Boot 2.7.1
  • JPA

Project Structure

 ๐Ÿ“‚
 โ”ฃ ๐Ÿ“‚app
 โ”ƒ โ”ฃ ๐Ÿ“‚admin
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚src
 โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚docs
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚asciidoc
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“œapi-doc.adoc
 โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚main
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚java
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚resources
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“œapplication.yml
 โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚test
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œDockerfile
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œDockerfile_dev
 โ”ƒ โ”ƒ โ”— ๐Ÿ“œbuild.gradle
 โ”ƒ โ”ฃ ๐Ÿ“‚api
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚src
 โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚docs
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚asciidoc
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“œapi-doc.adoc
 โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚main
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚java
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚resources
 โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚test
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œDockerfile
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œDockerfile_dev
 โ”ƒ โ”ƒ โ”— ๐Ÿ“œbuild.gradle
 โ”ƒ โ”ฃ ๐Ÿ“‚batch
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚src
 โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚main
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚java
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚resources
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“œapplication.yml
 โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚test
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œDockerfile
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œDockerfile_dev
 โ”ƒ โ”ƒ โ”— ๐Ÿ“œbuild.gradle
 โ”ƒ โ”ฃ ๐Ÿ“‚chat
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚src
 โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚main
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚java
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚resources
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“œapplication.yml
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œDockerfile
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œDockerfile_dev
 โ”ƒ โ”ƒ โ”— ๐Ÿ“œbuild.gradle
 โ”ƒ โ”ฃ ๐Ÿ“‚core
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚src
 โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚main
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚java
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚resources
 โ”ƒ โ”ƒ โ”— ๐Ÿ“œbuild.gradle
 โ”ฃ ๐Ÿ“‚domain
 โ”ƒ โ”ฃ ๐Ÿ“‚src
 โ”ƒ โ”ƒ โ”— ๐Ÿ“‚main
 โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚java
 โ”ƒ โ”— ๐Ÿ“œbuild.gradle
 โ”ฃ ๐Ÿ“œ.gitignore
 โ”ฃ ๐Ÿ“œREADME.md
 โ”ฃ ๐Ÿ“œbuild.gradle
 โ”— ๐Ÿ“œsettings.gradle
  • ๐Ÿ“‚domain : ํ”„๋กœ์ ํŠธ ์ „๋ฐ˜์— ์‚ฌ์šฉ๋˜๋Š” Entity ์™€ Repository ๊ฐ€ ํฌํ•จ๋œ๋‹ค.
  • ๐Ÿ“‚app : ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  api ์™€ ๊ด€๋ จ๋œ ์ฝ”๋“œ๊ฐ€ ํฌํ•จ๋œ๋‹ค. app ๋ชจ๋“ˆ์€ ๋‹ค์Œ 5๊ฐœ์˜ sub module์„ ํฌํ•จํ•œ๋‹ค.
    • ๐Ÿ“‚api : ์ˆ˜์ •๊ด‘์‚ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ RESTFul api endpoint ์ •์˜ ๋ฐ ๊ด€๋ จ ๋กœ์ง์ด ํฌํ•จ๋œ๋‹ค.
      • ๐Ÿ“œapi-doc.adoc : api ๋ชจ๋“ˆ๊ณผ ๊ด€๋ จ๋œ api ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ํŒŒ์ผ์ด๋‹ค.
      • ๐Ÿ“œbuild.gradle : api ๋ชจ๋“ˆ์— ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ ์–ธํ•˜๊ณ  ๋นŒ๋“œ์™€ ๊ด€๋ จ๋œ ์„ธํŒ…์„ ํ•˜๋Š” ํŒŒ์ผ์ด๋‹ค.
      • ๐Ÿ“œapplication.yml : api ๋ชจ๋“ˆ์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ๊ด€๋ จ๋œ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์„ธํŒ…ํ•˜๋Š” ํŒŒ์ผ์ด๋‹ค.
      • ๐Ÿ“œDockerfile : ๋ฐฐํฌ ํ™˜๊ฒฝ์—์„œ api ๋ชจ๋“ˆ์„ ๋„์ปค๋กœ ๋นŒ๋“œํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ํŒŒ์ผ์ด๋‹ค.
      • ๐Ÿ“œDockerfile_dev : ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ api ๋ชจ๋“ˆ์„ ๋„์ปค๋กœ ๋นŒ๋“œํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ํŒŒ์ผ์ด๋‹ค.
    • ๐Ÿ“‚admin : ์ˆ˜์ •๊ด‘์‚ฐ ๊ด€๋ฆฌ์ž๋ฅผ ์œ„ํ•œ RESTFul api endpoint ์ •์˜ ๋ฐ ๊ด€๋ จ ๋กœ์ง์ด ํฌํ•จ๋œ๋‹ค.
      • ๐Ÿ“œapi-doc.adoc : admin ๋ชจ๋“ˆ๊ณผ ๊ด€๋ จ๋œ api ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ํŒŒ์ผ์ด๋‹ค.
      • ๐Ÿ“œbuild.gradle : admin ๋ชจ๋“ˆ์— ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ ์–ธํ•˜๊ณ  ๋นŒ๋“œ์™€ ๊ด€๋ จ๋œ ์„ธํŒ…์„ ํ•˜๋Š” ํŒŒ์ผ์ด๋‹ค.
      • ๐Ÿ“œapplication.yml : admin ๋ชจ๋“ˆ์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ๊ด€๋ จ๋œ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์„ธํŒ…ํ•˜๋Š” ํŒŒ์ผ์ด๋‹ค.
      • ๐Ÿ“œDockerfile : ๋ฐฐํฌ ํ™˜๊ฒฝ์—์„œ admin ๋ชจ๋“ˆ์„ ๋„์ปค๋กœ ๋นŒ๋“œํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ํŒŒ์ผ์ด๋‹ค.
      • ๐Ÿ“œDockerfile_dev : ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ admin ๋ชจ๋“ˆ์„ ๋„์ปค๋กœ ๋นŒ๋“œํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ํŒŒ์ผ์ด๋‹ค.
    • ๐Ÿ“‚chat : ์ˆ˜์ •๊ด‘์‚ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ฑ„ํŒ… ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ api endpoint ์ •์˜ ๋ฐ ๊ด€๋ จ ๋กœ์ง์ด ํฌํ•จ๋œ๋‹ค. ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ํŒŒ์ผ์ด๋‹ค.
      • ๐Ÿ“œbuild.gradle : chat ๋ชจ๋“ˆ๊ณผ ๊ด€๋ จ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ ์–ธํ•˜๊ณ  ๋นŒ๋“œ์™€ ๊ด€๋ จ๋œ ์„ธํŒ…์„ ํ•˜๋Š” ํŒŒ์ผ์ด๋‹ค.
      • ๐Ÿ“œapplication.yml : chat ๋ชจ๋“ˆ์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ๊ด€๋ จ๋œ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์„ธํŒ…ํ•˜๋Š” ํŒŒ์ผ์ด๋‹ค.
      • ๐Ÿ“œDockerfile : ๋ฐฐํฌ ํ™˜๊ฒฝ์—์„œ admin ๋ชจ๋“ˆ์„ ๋„์ปค๋กœ ๋นŒ๋“œํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ํŒŒ์ผ์ด๋‹ค.
      • ๐Ÿ“œDockerfile_dev : ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ admin ๋ชจ๋“ˆ์„ ๋„์ปค๋กœ ๋นŒ๋“œํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ํŒŒ์ผ์ด๋‹ค.
    • ๐Ÿ“‚batch : ์„œ๋ฒ„๊ฐ€ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ž๋™ํ™”๋˜์–ด ์‹คํ–‰ํ•˜๋Š” ๊ธฐ๋Šฅ๊ณผ ๊ด€๋ จ๋œ ๋กœ์ง์ด ํฌํ•จ๋œ๋‹ค.
      • ๐Ÿ“œbuild.gradle : batch ๋ชจ๋“ˆ์— ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ ์–ธํ•˜๊ณ  ์„ธํŒ…์„ ์ •์˜ํ•˜๋Š” ํŒŒ์ผ์ด๋‹ค.
      • ๐Ÿ“œapplication.yml : batch ๋ชจ๋“ˆ์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ๊ด€๋ จ๋œ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์„ธํŒ…ํ•˜๋Š” ํŒŒ์ผ์ด๋‹ค.
      • ๐Ÿ“œDockerfile : ๋ฐฐํฌ ํ™˜๊ฒฝ์—์„œ batch ๋ชจ๋“ˆ์„ ๋„์ปค๋กœ ๋นŒ๋“œํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ํŒŒ์ผ์ด๋‹ค.
      • ๐Ÿ“œDockerfile_dev : ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ batch ๋ชจ๋“ˆ์„ ๋„์ปค๋กœ ๋นŒ๋“œํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ํŒŒ์ผ์ด๋‹ค.
    • ๐Ÿ“‚core : ์—ฌ๋Ÿฌ ๋ชจ๋“ˆ์—์„œ ๊ณตํ†ต์œผ๋กœ ํ™œ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ๊ณผ ๊ด€๋ จ๋œ ๋กœ์ง์ด ํฌํ•จ๋œ๋‹ค.
      • ๐Ÿ“œbuild.gradle : core ๋ชจ๋“ˆ์— ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ ์–ธํ•˜๊ณ  ๋นŒ๋“œ์™€ ๊ด€๋ จ๋œ ์„ธํŒ…์„ ํ•˜๋Š” ํŒŒ์ผ์ด๋‹ค.
    • ๐Ÿ“œbuild.gradle : ์ „์ฒด ํ”„๋กœ์ ํŠธ์— ์ ์šฉ๋˜๋Š” ์Šคํ”„๋ง ๋ถ€ํŠธ ๋ฒ„์ „์„ ์„ค์ •ํ•˜๊ณ  sub module ์„ ์„ค์ •ํ•˜๋Š” ํŒŒ์ผ์ด๋‹ค.
    • ๐Ÿ“œsettings.gradle : sub module ์„ ์„ ์–ธํ•˜๊ธฐ ์œ„ํ•œ ํŒŒ์ผ์ด๋‹ค.
    • ๐Ÿ“œ.gitignore : git ์— ์˜ฌ๋ผ๊ฐ€์ง€ ์•Š์•„์•ผ ํ•  ํŒŒ์ผ์„ ์ •์˜ํ•˜๋Š” ํŒŒ์ผ์ด๋‹ค.

Deploy Rule

Check List Before a Git Push

  1. api ์—”๋“œํฌ์ธํŠธ ๋ฐ ์„œ๋น„์Šค ๋กœ์ง์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๊ฐ€๊ธ‰์  ์ž‘์„ฑํ•œ๋‹ค.
  2. ๋ฐœํ–‰ํ•œ api ์— ๋Œ€ํ•œ ๋ช…์„ธ๋ฅผ ๐Ÿ“‚์ˆ˜์ •ํ•œ ๋ชจ๋“ˆ/src/docs/asciidoc/api-doc.adoc ์— ์ถ”๊ฐ€ํ•œ๋‹ค.
  3. ์ˆ˜์ •ํ•œ ๋ชจ๋“ˆ์˜ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ „์ฒด ์‹คํ–‰ํ•œ๋‹ค. ์˜ค๋ฅ˜๊ฐ€ ๋‚œ๋‹ค๋ฉด ์ˆ˜์ •ํ•œ๋‹ค.

How to Deploy on Test Environment

  1. DB ๊ด€๋ จ ์ˆ˜์ • ์‚ฌํ•ญ์€ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ DB์— ๋ฐ˜์˜ํ•œ๋‹ค.
  2. application.yml ๊ด€๋ จ ์ˆ˜์ • ์‚ฌํ•ญ์€ jenkins ์„œ๋ฒ„ ๐Ÿ“‚/var/lib/jenkins/workspace/resources/test/application.yml ์„ ์ˆ˜์ •ํ•œ๋‹ค.
  3. jenkins ์—์„œ ๋ชจ๋“ˆ๋ช…-develop ์›Œํฌ์ŠคํŽ˜์ด์Šค๋ฅผ ์ˆ˜๋™ ๋นŒ๋“œํ•œ๋‹ค.

How to Deploy on Prod Environment

  1. DB ๊ด€๋ จ ์ˆ˜์ • ์‚ฌํ•ญ์„ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ DB์— ๋ฐ˜์˜ํ•œ๋‹ค.
  2. develop ๋ธŒ๋Ÿฐ์น˜๋ฅผ production ๋ธŒ๋Ÿฐ์น˜๋กœ ๋ณ‘ํ•ฉํ•œ๋‹ค.
  3. application.yml ๊ด€๋ จ ์ˆ˜์ • ์‚ฌํ•ญ์€ jenkins ์„œ๋ฒ„ ๐Ÿ“‚/var/lib/jenkins/workspace/resources/application.yml ์„ ์ˆ˜์ •ํ•œ๋‹ค.
  4. jenkins ์—์„œ ๋ชจ๋“ˆ๋ช…-production ์•„์ดํ…œ์„ ์ˆ˜๋™ ๋นŒ๋“œํ•œ๋‹ค.