Skip to content

wlswo/MoCo

Repository files navigation

๋ฐฐํฌ ์ค‘๋‹จ ์•Œ๋ฆผ

  • 2023.07.15 AWS ํ”„๋ฆฌํ‹ฐ์–ด ์ง€์› ์ข…๋ฃŒ๋กœ ์ธํ•ด ๋ฐฐํฌ๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.



๋ชจ๊ฐ์ฝ”, ํ•จ๊ป˜ ์ฝ”๋”ฉํ•˜๊ณ  ๊ต๋ฅ˜ํ•˜๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ

ํ˜ผ์ž ์ฝ”๋”ฉํ•˜๋А๋ผ ์ง€์น˜์‹œ์ง€๋Š” ์•Š์œผ์‹ ๊ฐ€์š”? ๋‹ค์–‘ํ•œ ์‚ฌ๋žŒ๋“ค๊ณผ ํ•จ๊ป˜ ์ฝ”๋”ฉํ•˜๋ฉด์„œ ๊ต๋ฅ˜ํ•ด๋ณด์„ธ์š”!


๐Ÿ“– ๋ชฉ์ฐจ

๊ฐœ์š”

MoCo๋Š” ์Šคํ„ฐ๋””๋ฅผ ์œ„ํ•œ ๊ฒŒ์‹œํŒ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ๋งˆํฌ๋‹ค์šด ์—๋””ํ„ฐ๋ฅผ ์ด์šฉํ•œ ๊ฒŒ์‹œํŒ์ž…๋‹ˆ๋‹ค.
์ผ๋ฐ˜์ ์ธ ์„œ๋ฒ„ - ํด๋ผ์ด์–ธํŠธ ๊ตฌ์กฐ์˜ ์•„ํ‚คํ…์ฒ˜์— ์ผ๋ถ€ ์ปจํ…์ธ ๋ฅผ ์ด๋”๋ฆฌ์›€ ๋„คํŠธ์›Œํฌ์™€ ์—ฐ๋™ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ ํ™˜๊ฒฝ

IntelliJย IntelliJย IntelliJย IntelliJย IntelliJย IntelliJ

  • MacOS M1
  • IntelliJ
  • Visual Studio Code
  • GitHub
  • Docker
  • DBeaver

์‚ฌ์šฉ ๊ธฐ์ˆ 

javaย springbootย spriongsecurityย spriongsecurity

spriongsecurityย  spriongsecurityย  spriongsecurityย  spriongsecurity

gradle

mysql

ec2ย s3ย albย route53ย rds

๋ฐฑ์—”๋“œ

  • Java 11
  • SpringBoot 2.7.2
  • Spring Security5
  • Spring Data JPA
  • QueryDsl 5.0.0
  • Lombok

ํ”„๋ก ํŠธ์—”๋“œ

  • Html5/css3
  • Javascript
  • Thymeleaf
  • Bootstrap 5

๋นŒ๋“œ ํˆด

  • Gradle 7.5

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

  • Mysql

์ธํ”„๋ผ

  • AWS EC2
  • AWS S3
  • AWS Route53
  • AWS RDS
  • AWS ALB
  • Github Actions
  • Docker
  • DockerHub

๋ธ”๋ก์ฒด์ธ

  • goerli network
  • solidity
  • Meta Mask

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜

์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜

Server ์•„ํ‚คํ…์ฒ˜

์•„ํ‚คํ…์ฒ˜

E-R ๋‹ค์ด์–ด๊ทธ๋žจ

ERD

Api ๋ช…์„ธ์„œ

MoCo ๋ฆด๋ฆฌ์ฆˆ ๋…ธํŠธ

2022-10-26 MoCo v1.1.0 ๋ฆด๋ฆฌ์ฆˆ ๋ณด๊ธฐ

์นด์นด์˜ค๋งต

๐Ÿ˜Ž ์นด์นด์˜ค๋งต Api๋ฅผ ์ถ”๊ฐ€, ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ๋งŒ๋‚จ ์žฅ์†Œ๋ฅผ ๊ฒ€์ƒ‰ํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ง€๋„์— ํ‘œ์‹œ๋œ ๋งˆ์ปค๋ฅผ ์„ ํƒํ•ด ๋งŒ๋‚จ ์žฅ์†Œ๋ฅผ ์ •ํ•˜์‹ค์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
2022-11-01 MoCo v1.2.0 ๋ฆด๋ฆฌ์ฆˆ ๋ณด๊ธฐ


๐Ÿ˜Ž ๋กœ๊ทธ์ธํ™”๋ฉด ์ง„์ž…์‹œ ์ž๋™์œผ๋กœ ๋กœ๊ทธ์ธ์ฐฝ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. - ๋กœ๊ทธ์ธ ์ ‘๊ทผ์„ฑ์„ ๋†’์˜€์Šต๋‹ˆ๋‹ค.
2022-11-07 MoCo v1.3.0 ๋ฆด๋ฆฌ์ฆˆ ๋ณด๊ธฐ


๐Ÿ˜Ž NginX์„ ๋„์ž…ํ•˜์—ฌ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ ํ™˜๊ฒฝ์œผ๋กœ ์—…๋ฐ์ดํŠธ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
2023-03-22 MoCo v2.0.0 ๋ฆด๋ฆฌ์ฆˆ ๋ณด๊ธฐ


๐Ÿ˜Ž Native Query -> QueryDsl ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
๐Ÿ˜Ž ์ฟผ๋ฆฌ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด ERD ๊ตฌ์กฐ๋ฅผ ๋ฐ˜์ •๊ทœํ™” ํ•˜์˜€์Šต๋‹ˆ๋‹ค.


ํ”„๋กœ์ ํŠธ ๋ชฉ์ 

์‹ค์„œ๋น„์Šค๊ฐ€ ๊ฐ€๋Šฅํ•œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์ถ•์„ ์ค‘์ ์œผ๋กœ ๋ฐฐํฌ์™€ ์„ค๊ณ„, ๊ธฐ์ˆ ์ ๊ณ ๋ฏผ์„ ๊ฒฝํ—˜ํ•ด ๋ณด๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.
๋ธ”๋ก์ฒด์ธ ๋„คํŠธ์›Œํฌ ์—ฐ๋™์„ ํ†ตํ•ด Web3 ์„œ๋น„์Šค๋ฅผ ๊ตฌํ˜„ํ•ด ๋ณด๋ฉด์„œ Dapp ๊ฐœ๋ฐœ์˜ ์ „๋ฐ˜์ ์ธ ์ง€์‹์„ ์Œ“์œผ๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ™”๋ฉด ๊ตฌ์„ฑ๐Ÿ’ป

์ฒซํŽ˜์ด์ง€ ๋ฉ”์ธํŽ˜์ด์ง€ ๋กœ๊ทธ์ธ ํšŒ์›๊ฐ€์ž…
์ฒซ ํŽ˜์ด์ง€ ๋ฉ”์ธ ํŽ˜์ด์ง€ ๋กœ๊ทธ์ธ ํšŒ์›๊ฐ€์ž…
๊ธ€์ž‘์„ฑ ๊ฒŒ์‹œ๊ธ€ ๋ณด๊ธฐ ์ถœ์„์ฒดํฌ๋ณด์ƒ ํ† ํฐ๋ฐ›๊ธฐ ์„ค์ •ํŽ˜์ด์ง€
๊ธ€์ž‘์„ฑ ํŽ˜์ด์ง€ ๊ฒŒ์‹œ๊ธ€ ๋ณด๊ธฐ ์ถœ์„์ฒดํฌ ๋ณด์ƒ ์„ค์ • ํŽ˜์ด์ง€

๋„ํŠธ๋งต ๋•…๊ตฌ๋งค ๋ชจ๋‹ฌ์ฐฝ ๊ตฌ๋งค๋œ ๋•… ํ‘œ์‹œ
๋„ํŠธ๋งต ํŽ˜์ด์ง€ ๋•…๊ตฌ๋งค ๋ชจ๋‹ฌ์ฐฝ ๊ตฌ๋งค๋œ ๋•… ํ‘œ์‹œ

๊ธฐ๋Šฅ

๋กœ๊ทธ์ธ

  • ์†Œ์…œ ๋กœ๊ทธ์ธ
    • ์†Œ์…œ ๋กœ๊ทธ์ธ ๊ตฌํ˜„์„ ์œ„ํ•ด ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ์™€, OAuth2 ์ธ์ฆ๋ฐฉ์‹์„ ์‚ฌ์šฉํ–ˆ์œผ๋ฉฐ, ์—‘์„ธ์Šค ํ† ํฐ์œผ๋กœ ๋ฐ›์•„์˜ค๋Š” ์œ ์ € ์ •๋ณด๋ฅผ ์ปค์Šคํ…€ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด Oauth2UserService ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†๋ฐ›์•„ CustomOauth2UserService ํด๋ž˜์Šค๋ฅผ ๊ตฌํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
      CustomOauth2UserService
  • ์ผ๋ฐ˜ ๋กœ๊ทธ์ธ
    • ์ž์ฒด ๋กœ๊ทธ์ธ ๋ฐฉ์‹์œผ๋กœ๋Š” ํšŒ์›๊ฐ€์ž…์‹œ ์ž…๋ ฅํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ํ•ด์‹œ ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ•˜์—ฌ ๋‚˜์˜จ ํ•ด์‹œ๊ฐ’์„ DB์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
    • ๋กœ๊ทธ์ธ์‹œ ์‚ฌ์šฉํ•œ ํ•ด์‹œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ฐพ์•„ ๋น„๋ฐ€๋ฒˆํ˜ธ์˜ ์ •ํ•ฉ์„ฑ์„ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.
      UserService

Toast Ui editor

โ€‚โ€‚์ด๋ฏธ์ง€ ์ €์žฅ

  • ๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ์€ NHN์—์„œ ๊ฐœ๋ฐœํ•œ ์˜คํ”ˆ์†Œ์Šค๋กœ, ๋งˆํฌ๋‹ค์šด๊ณผ ์œ„์ง€์œ… ๋ฐฉ์‹์„ ์ง€์›ํ•˜๋Š” ์ƒ์‚ฐ์„ฑ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ด์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ์‹œ ์ด๋ฏธ์ง€ ์‚ฝ์ž…์€ base64ํ˜•์‹์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•œ hooks ์˜ต์…˜์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ด๋ฏธ์ง€์˜ base64 ์ธ์ฝ”๋”ฉ์˜ ๋‹จ์ ์€ ํ•ด์ƒ๋„์— ๋”ฐ๋ผ ๊ธ€์ž์ˆ˜๊ฐ€ ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ์˜ฌ๋ผ๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— DB์ €์žฅ์‹œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • ๋”ฐ๋ผ์„œ ์ด๋ฏธ์ง€์˜ ์ €์žฅ๋œ ์ฃผ์†Œ๊ฐ’์ธ url์„ ์ €์žฅํ•˜๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.
  1. ์ด๋ฏธ์ง€ ์‚ฝ์ž…์‹œ hooks ์˜ต์…˜์œผ๋กœ blob ๊ฐ์ฒด๋ฅผ ์ธํ„ฐ์…‰ํ„ฐํ•ฉ๋‹ˆ๋‹ค.
  2. Ajax๋กœ blob ๊ฐ์ฒด๋ฅผ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„๋กœ ์ €์žฅ ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
  3. ๋ฐฑ์—”๋“œ ์„œ๋ฒ„์—์„œ blob ๊ฐ์ฒด๋ฅผ multipart๋กœ ๋ฐ›์•„ aws s3 ๋ฒ„ํ‚ท์— ์ €์žฅ ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
  4. ์ €์žฅ์— ์„ฑ๊ณต์‹œ ์—…๋กœ๋“œ๋œ url์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€ ์—…๋กœ๋“œ ์š”์ฒญ

์ด๋ฏธ์ง€ ์—…๋กœ๋“œ ์ฒ˜๋ฆฌ

๊ฒŒ์‹œ๊ธ€ CRUD

โ€‚โ€‚๊ธ€์ž‘์„ฑ

  • Toast Ui editor๋กœ ์ž‘์„ฑํ•œ ๋งˆํฌ๋‹ค์šด ๋ฌธ๋ฒ•์„ html ๋กœ ํŒŒ์‹ฑํ•˜์—ฌ ์ €์žฅํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ๊ฒŒ์‹œ๊ธ€ ์ €์žฅ์‹œ ๊ฐ ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์—๋Ÿฌ ๋ฐœ์ƒ์‹œ ์ž‘์„ฑํ–ˆ๋˜ ๋‚ด์šฉ๋“ค์€ ์œ ์ง€ํ•˜๋ฉด์„œ ์—๋Ÿฌ ๋‚ด์šฉ๋˜ํ•œ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • tagify ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ํƒœ๊ทธ๋ฅผ ์ž‘์„ฑํ• ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํƒœ๊ทธ๋“ค์€ Json ํฌ๋งท์œผ๋กœ ๋ฐ›์•„์˜ค๋ฉฐ ArrayList ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ํŒŒ์‹ฑํ•˜์—ฌ ํ•œ๊ฐœ์˜ ํƒœ๊ทธ๋‹น ํ•œ๊ฐœ์˜ ์ปฌ๋Ÿผ์œผ๋กœ DB์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

โ€‚โ€‚๊ธ€ ์ˆ˜์ •

  • ๊ฒŒ์‹œ๊ธ€ ๋ณธ๋ฌธ์˜ ๋‚ด์šฉ์„ DB์— ์ €์žฅ์‹œ ๋งˆํฌ๋‹ค์šด์œผ๋กœ ์ €์žฅํ•ด์•ผ ํ• ์ง€, Htmlํƒœ๊ทธ๋กœ ๋ณ€ํ™˜ํ›„ ์ €์žฅํ•ด์•ผ ํ• ์ง€ ๊ณ ๋ฏผ์ด ๋งŽ์•˜์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ์ด์Šˆ๋Š” ์•„๋ž˜ ๋งํฌ์—์„œ ํ™•์ธํ•˜์‹ค์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฒŒ์‹œ๊ธ€ ์ˆ˜์ •์€ ๋นˆ๋ฒˆํ•˜๊ฒŒ ๋ฐœ์ƒํ•˜๋Š” ์ž‘์—…์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— html ํƒœ๊ทธ๋กœ ์ €์žฅํ›„ ๊ฒŒ์‹œ๊ธ€ ์ˆ˜์ •์‹œ์— ๋งˆํฌ๋‹ค์šด ๋ฌธ๋ฒ•์œผ๋กœ ํŒŒ์‹ฑํ•˜๋„๋ก ๊ตฌํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ํƒœ๊ทธ ์ˆ˜์ •์‹œ ์‚ญ์ œ๋œ ํƒœ๊ทธ, ์ถ”๊ฐ€๋œ ํƒœ๊ทธ๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด hashSet ์ž๋ฃŒ๊ตฌ์กฐ์˜ ์ฐจ์ง‘ํ•ฉ์„ ๊ตฌํ• ์ˆ˜ ์žˆ๋Š” removeAll() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.

โ€‚โ€‚๊ธ€ ์‚ญ์ œ

โ€‚โ€‚๊ฒŒ์‹œ๊ธ€ ์ฝ๊ธฐ

๋Œ“๊ธ€๊ณผ ๋Œ€๋Œ“๊ธ€ ๊ตฌํ˜„

๋Œ€๋Œ“๊ธ€์˜ ๊ฒฝ์šฐ ์—”ํ‹ฐํ‹ฐ ๊ตฌ์กฐ์•ˆ์—์„œ ์…€ํ”„์กฐ์ธ์„ ์ฐธ์กฐํ•˜์—ฌ ๊ณ„์ธต์„ ๊ฐ€์ง€๋„๋ก ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

์—๋Ÿฌ์ฒ˜๋ฆฌ

๋กœ๊ทธ์ธ, ํšŒ์›๊ฐ€์ž…์‹œ ์—๋Ÿฌ๊ฐ€ ๋‚˜๋Š”๊ฒฝ์šฐ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ์œ„ํ•ด ์ปค์Šคํ…€ ํด๋ž˜์Šค๋ฅผ ๊ตฌํ˜„ํ–ˆ์œผ๋ฉฐ, ๋กœ๊ทธ์ธ ๊ด€๋ จ ์—๋Ÿฌ์™€ ํšŒ์›๊ฐ€์ž…์‹œ ์—๋Ÿฌ์— ๋งž๊ฒŒ ์ฒ˜๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋ฐœ์ƒํ•œ ์—๋Ÿฌ๋“ค์€ ์ถ”์ ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก Log๋ฅผ ๋‚จ๊ฒจ CloudWatch ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ์„ ์ด์šฉํ•˜์—ฌ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ™•์ธ ๊ฐ€๋Šฅํ•˜๋„๋ก ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ์ด๋ฏธ์ง€

CustomAuthFailureHandler

ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ

  • QueryDsl๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŽ˜์ด์ง•์„ ๊ตฌํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

    • ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์ฟผ๋ฆฌ ์˜ค๋ฅ˜ ๋ฐฉ์ง€์™€, SQL ์•ˆํ‹ฐํŒจํ„ด์ธ ์„œ๋ธŒ์ฟผ๋ฆฌ ์‚ฌ์šฉ์„ ์ง€์–‘ํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ์กด์˜ Native Query ๋ฅผ QueryDsl๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
    • ๊ธฐ์กด์˜ Native Query
    • QueryDsl
  • ajax๋ฅผ ์ด์šฉํ•œ ๋ฌดํ•œ์Šคํฌ๋กค

    • ํŽธํ•œ ์Šคํฌ๋กค๋ง์œผ๋กœ ์ฝ˜ํ…์ธ ๊ฐ€ ๋กœ๋“œ๋˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํŠนํžˆ ๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ์—์„œ ๋” ๋‚˜์€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ฃผ๋ฉฐ,์ฝ˜ํ…์ธ ์˜ ๋…ธ์ถœ์„ ์‰ฝ๊ฒŒ ์ ‘ํ• ์ˆ˜ ์žˆ๋„๋ก ์ผ๋ฐ˜์ ์ธ ํŽ˜์ด์ง€๋„ค์ด์…˜์„ ๋‘๊ณ  ๋ฌดํ•œ์Šคํฌ๋กค์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
    • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฌดํ•œ์Šคํฌ๋กค
  • ์Šคํฌ๋กค ์œ„์น˜์™€ ๋ฐ์ดํ„ฐ ์œ ์ง€

    • ๋ฌดํ•œ ์Šคํฌ๋กค์˜ ๋‹จ์ ์ธ ๋ Œ๋”๋ง๋œ ๊ฒŒ์‹œ๊ธ€๋“ค๊ณผ ์Šคํฌ๋กค๋ง ํ–ˆ๋˜ ์œ„์น˜๋กœ ๋Œ์•„์˜ฌ์ˆ˜ ์žˆ๋„๋ก ์„ธ์…˜์Šคํ† ๋ฆฌ์ง€๋ฅผ ์ด์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.
    • ๊ฒŒ์‹œ๊ธ€ ๋ฆฌ์ŠคํŠธํŽ˜์ด์ง€๋ฅผ ๋ฒ—์–ด๋‚ ๋•Œ ์„ธ์…˜์Šคํ† ๋ฆฌ์ง€์— ์Šคํฌ๋กค์˜ ์œ„์น˜์™€ ๋ Œ๋”๋ง ์ •๋ณด๋ฅผ ์ €์žฅํ›„ ํ•ด๋‹น ํŽ˜์ด์ง€์— ๋Œ์•„์™”์„๋•Œ ์„ธ์…˜ ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅ๋œ ๊ฐ’์„ ๋ Œ๋”๋งํ•˜๋ฉฐ ์ด์ „ ์Šคํฌ๋กค์˜ ์œ„์น˜๋กœ ์ด๋™ํ•˜๋„๋ก ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
    • ๋ Œ๋”๋ง, ์Šคํฌ๋กค ์œ„์น˜๊ธฐ์–ตํ•˜๊ธฐ

๋„ํŠธ๋งต ๋ Œ๋”๋ง

์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ & Web3

  • ๋„ํŠธ๋กœ ๊ตฌ์„ฑ๋œ ๋•…์€ ํ† ํฐ์œผ๋กœ ๊ตฌ๋งคํ• ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋„ํŠธ๋Š” ์ง€์—ญ๋ณ„๋กœ ๊ฐ€๊ฒฉ์ด ๋‹ค๋ฅด๋ฉฐ ์ค‘์•™์— ์œ„์น˜ํ• ์ˆ˜๋ก ๋น„์‹ธ์ง‘๋‹ˆ๋‹ค.
  • ๊ตฌ๋งค ๊ณผ์ •์€ ๊ตฌ๋งค ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ›„ ํ•ด๋‹น ํŠธ๋žœ์žญ์…˜์ด ์ƒํƒœ๊ฐ€ pendding -> success ๋ ๋•Œ๊นŒ์ง€ 1์ดˆ๋งˆ๋‹ค ๊ฐ์ง€ํ•˜๋„๋ก ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ถœ์„์ฒดํฌ ๋ณด์ƒ, ๊ฐ€์ž…์‹œ ๋ณด์ƒ ๋ชจ๋‹ฌ์ฐฝ์„ ํ†ตํ•ด ๋ชจ๊ฐ์ฝ”์ธ์„ ๋ฉ”ํƒ€๋งˆ์Šคํฌ์— ์ถ”๊ฐ€ํ• ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

CI/CD

๋ฐ˜๋ณต์ ์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ค„์ด๊ณ  ์œ ์ง€๋ณด์ˆ˜์˜ ํŽธ๋ฆฌํ•จ์„ ์œ„ํ•ด ์ง€์†์  ํ†ตํ•ฉ๊ณผ ์ง€์†์  ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๊นƒ ํ—ˆ๋ธŒ์•ก์…˜์ด master ๋ธŒ๋žœ์น˜๋กœ push๋œ code๋ฅผ ๊ฐ์ง€ํ•˜์—ฌ ์ƒ์„ฑํ•œ ์Šคํฌ๋ฆฝํŠธ ์„ค์ •ํŒŒ์ผ์— ๋”ฐ๋ผ jar ํŒŒ์ผ๋กœ ๋นŒ๋“œํ›„ ๋„์ปค ์ด๋ฏธ์ง€ํ™” ์‹œํ‚ต๋‹ˆ๋‹ค.

๋„์ปค ์ด๋ฏธ์ง€ํ™”๋œ ๋„์ปคํŒŒ์ผ์€ ๋„์ปค ์ด๋ฏธ์ง€ ์ €์žฅ์†Œ์ธ ๋„์ปค ํ—ˆ๋ธŒ๋กœ push ๋ฉ๋‹ˆ๋‹ค.

push๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ec2 ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•ด๋‹น ๋„์ปค ํŒŒ์ผ์„ pull ํ•˜๊ฒŒ ๋˜๋ฉฐ ์‹คํ–‰์ค‘์ด์—ˆ๋˜ ์Šคํ”„๋ง๋ถ€ํŠธ ๋„์ปคํŒŒ์ผ์„ ์ •์ง€ -> ์ปจํ…Œ์ด๋„ˆ ์‚ญ์ œ -> ์ƒˆ๋กœ ๋‚ด๋ ค๋ฐ›์€ ๋„์ปคํŒŒ์ผ ์‹คํ–‰ ์ˆœ์œผ๋กœ ์ž‘์—…์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๋ฌด์ค‘๋‹จ ๋ฐฐํฌ

nginx๋ฅผ ๋„์ž…ํ•˜์—ฌ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ ํ™˜๊ฒฝ์„ ๊ตฌํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

  • ์ƒˆ๋กœ์šด ๋ฒ„์ „์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ฐฐํฌ๋˜๋ฉด ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํฌํŠธ๋ฅผ ํ™•์ธํ•˜์—ฌ docker๋กœ ๊ตฌ๋™์‹œํ‚ต๋‹ˆ๋‹ค.
    • ex) 8080ํฌํŠธ๊ฐ€ ์‚ฌ์šฉ์ค‘์ด๋ฉด 8081 / 8081๋ฒˆ ํฌํŠธ๊ฐ€ ์‚ฌ์šฉ์ค‘์ด๋ฉด 8080์œผ๋กœ ๊ตฌ๋™์‹œํ‚ต๋‹ˆ๋‹ค.
  • ๊ตฌ๋™๋œ ์•ฑ์˜ health ๋ฅผ ์ฒดํฌํ•˜์—ฌ ์„œ๋ฒ„์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • ์ •์ƒ ๋ฐฐํฌ๊ฐ€ ํ™•์ธ๋˜๋ฉด nginx์˜ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ ๋Œ€์ƒ์„ ์‹ ๊ทœ ๋ฒ„์ „์˜ ์•ฑ์˜ ํฌํŠธ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ค‘์ด๋˜ ์ปจํ…Œ์ด๋„ˆ์™€ ์ด๋ฏธ์ง€๋ฅผ ์‚ญ์ œ ํ•˜์—ฌ ์„œ๋ฒ„ ๊ต์ฒด๋ฅผ ๋งˆ๋ฌด๋ฆฌ ํ•ฉ๋‹ˆ๋‹ค.

๋ฐฐํฌ ์Šคํฌ๋ฆฝํŠธ

๋„๋ฉ”์ธ https ์ ์šฉ

๋ธŒ๋ผ์šฐ์ €์˜ ์•ˆ์ „ํ•œ ์ ‘์†๊ณผ , ๋ธŒ๋ผ์šฐ์ € ์‚ฌ์ด์˜ ๋ฏผ๊ฐํ•œ ์ •๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ›์„๋•Œ๋ฅผ ๋Œ€๋น„ํ•ด aws ACM์ธ์ฆ์„œ๋ฅผ ๋ฐ›์•„ SSL ์„ ์ ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๊ฐ€๋น„์•„์—์„œ ๊ตฌ๋งคํ•œ ๋„๋ฉ”์ธ๊ณผ aws Route53์„ ์ด์šฉํ•ด ๋„๋ฉ”์ธ์„ ์—ฐ๊ฒฐํ•˜์˜€์Šต๋‹ˆ๋‹ค.


UI/UX Reference

About

Team Building Platform with Web3

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published