โ
๋ณ๊ฒฝ ์ํฅ๋ ์ต์ํ ( ํ ์๋น์ค์ ๋ณ๊ฒฝ์ด ๋ค๋ฅธ ์๋น์ค์ ๋ฏธ์น๋ ์ํฅ์ ์ค์ผ ์ ์๋๋ก ) + ๋
๋ฆฝ์ ์ธ ๋ฐฐํฌ ๊ฐ๋ฅ + ์ฅ์ ๊ฒฉ๋ฆฌ ( ํ ์๋น์ค์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํด๋ ๊ทธ ์ํฅ์ด ๋ค๋ฅธ ์๋น์ค๋ก ํ์ฐ๋์ง ์๋๋ก ) ํ๊ธฐ ์ํด ๊ฐ๊ฐ์ ์๋น์ค์ ๊ฒฐํฉ์ ์ต์ํ ํ์ฌ์ผ ํ๋ค.
์ด๋ฅผ ์ํด ๊ฐ๊ฐ์ ์๋น์ค๋ฅผ ์ด๋ค์์ผ๋ก ๋๋์ด์ผ ํ๋์ง ๊ณ ๋ฏผํด์ผ ํ๋ค.
์ฒซ๋ฒ์งธ ์ฒ๋ผ ๊ฐ๊ฐ์ ์๋น์ค๋ฅผ ๋ชจ๋ ๋
๋ฆฝํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ด๋ค.
ํ์ง๋ง ์ ๊ณตํด์ผ ํ๋ ์๋น์ค์ ๋ฐ๋ผ ๋๋ฒ์งธ์ฒ๋ผ ์ฐ๊ด๊ด๊ณ๊ฐ ๊ฒน์น ์ ์๋ค.
์ด๋ด ๊ฒฝ์ฐ๋ ์ธ๋ฒ์งธ ๊ทธ๋ฆผ์ฒ๋ผ ๋ฐฉํฅ์ฑ์ ํ ๊ณณ์ผ๋ก ํต์ผํ๊ณ ์ต์๋ก ๊ฒน์น ์ ์๋๋ก ์ค๊ณํ์ฌ Data Service ์ Mission Service ๋ ๋
๋ฆฝ์ฑ์ ํ๋ณดํ๊ณ Member Service๋ฅผ ๊ฑด๋๋ฆด๋๋ง Data Service ์ Mission Service ๋ ํจ๊ป ์ ์ฉํ๋ ๋ฐฉ์์ผ๋ก ์ค๊ณํ๋ ๋ฐฉ์ ๋ฑ์ ๊ณ ๋ คํ์ฌ์ผ ํ๋ค.
โ ์ต์ข ์ ์ธ MSA ๊ตฌ์กฐ๋๋ ์๋์ ๊ฐ์ด ์์ฑํ์๋ค.
์ผ๋จ FK๋ก ์ก๋๋ค๋ฉด pk์ ์ค๋ณต์ฑ์ ๊ฐ์ง๋ฏ๋ก pk๊ฐ ๋ถ๊ฐ๋ฅํ๋ค. ๋ฐ๋ผ์ ๋ณตํฉํค์ ์ธ๋ฑ์คํค ์ค์์ ์ ํํ๊ธฐ๋ก ํ์๋ค.
๊ฐ ์ฌ์ฉ์๊ฐ ํ๋ฃจ์ ํ ๋ฒ๋ง ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๋ค๋ฉด, ์ฌ์ฉ์ ID์ ๋ ์ง์ ์กฐํฉ์ ์ ํจํ ๊ธฐ๋ณธํค๊ฐ ๋ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ๋ณตํฉํค(composite key)๋ก์ '์ฌ์ฉ์ID+๋ ์ง'๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์์ ํ ํ๋นํ ๋ฐฉ๋ฒ์ด๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋ณตํฉํค๋ฅผ ์ฌ์ฉํ๋ฉด ์ธ๋ฑ์ค ํฌ๊ธฐ๊ฐ ์ปค์ง๊ณ ๋์คํฌ I/O๊ฐ ์ฆ๊ฐํ์ฌ ์ฑ๋ฅ์ด ์ ํ๋ ์ ์๋ค. ๊ทธ๋ฌ๋ '์ฌ์ฉ์ID+๋ ์ง'์ ๊ฐ์ด ๋ ํ๋ ๋ชจ๋์ ๋ํด ์์ฃผ ์กฐํ๋ฅผ ์คํํ๋ค๋ฉด, ๋ณตํฉํค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ด๋ฌํ ์กฐํ์ ๋ํ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์๋ค.
๊ทธ๋ฌ๋ "์ ์ id๋ฅผ ์ฝ์ ๋ค ๋ ์ง๋ณ๋ก ๋ฐ์ดํฐ๊ฐ์ ์์ฃผ ์กฐํ"ํ๋ ๊ฒฝ์ฐ๋ผ๋ฉด, '์ฌ์ฉ์ID'์ '๋ ์ง' ๊ฐ๊ฐ์ ๋ณ๋๋ก ์ธ๋ฑ์ฑ ํ๋ ๊ฒ์ด ์ข์ ์๋ ์๋ค.
๐ ์กฐํ๊ธฐ๋ฅ์ด ๋๋ฌด ์์ฃผ ์ผ์ด๋๋ฏ๋ก ์ธ๋ฑ์คํค๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ํ์๋ค. ์์ธํ ๋ด์ฉ์ [ ๋ณตํฉํค์ ์ธ๋ฑ์คํค (feat. ์คํ๋ง๋ถํธ) ] ๊ฒ์๊ธ์ ์ฐธ๊ณ ํ์
โ ec2 ์ธ์คํด์ค์์ ๋ช ๋ น์ด๋ก ์น ๊ฒฝ์ฐ :
-e PASSWORD=์ง์ ํ ํจ์ค์๋๊ฐ
์ ์์ฑํ์ฌ ํ๊ฒฝ์ค์ ์์ ์ค์ ํ ๋น๋ฐ๋ฒํธ๊ฐ์ ์
๋ ฅํ๋ค.
sudo docker run -d -p 8011:8011 --network=mynetwork -e PASSWORD=์ง์ ํ ํจ์ค์๋๊ฐ -e TZ=Asia/Seoul --name member docker/special:member
โ ์ ํจ์ค ํ์ดํ๋ผ์ธ์ ์ค์ ํ ๊ฒฝ์ฐ :
ํ์ดํ๋ผ์ธ ์คํฌ๋ฆฝํธ์ password๊ฐ์ ์ง์ ํ๋ค.
pipeline {
agent any
environment {
DOCKER_IMAGE = 'docker/special:member'
PASSWORD = '์ง์ ํ ํจ์ค์๋๊ฐ'
}
โ MySQL ์๊ฐ๋ง์ถ๊ธฐ :
yml ํ์ผ์ ์๊ฐ์ ์ค์ ํด์ค๋ค.
url: jdbc:mysql://localhost:3306/data?serverTimezone=Asia/Seoul
โ ec2 ์ธ์คํด์ค ์๊ฐ๋ง์ถ๊ธฐ :
-e TZ=Asia/Seoul
๋ก ํ๊ตญ ๋ ์ง๋ฅผ ๋ถ์ฌํ๋ค.
sudo docker run -d -p 8011:8011 --network=mynetwork -e PASSWORD=์ง์ ํ ํจ์ค์๋๊ฐ -e TZ=Asia/Seoul --name member docker/special:member