- ๋ฏธ์ ์ ์์คํ ์๊ตฌ ์ฌํญ, ํ๋ก๊ทธ๋๋ฐ ์๊ตฌ ์ฌํญ ๋ ๊ฐ์ง๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
- ๋ ๊ฐ์ ์๊ตฌ ์ฌํญ์ ๋ง์กฑํ๊ธฐ ์ํด ๋ ธ๋ ฅํ๋ค. ํนํ ์์คํ ์ ๊ตฌํํ๋ฉฐ ๋ง์ฃผํ๋ ๋ฌธ์ ์ ํด๊ฒฐ ๊ณผ์ ์ ๊ธฐ๋กํ๋ ๋ฐ์ ์ง์คํ๋ค.
- ์์คํ ์๊ตฌ ์ฌํญ์ ๊ธฐ์ฌ๋์ง ์์ ๋ด์ฉ์ ์ค์ค๋ก ํ๋จํ์ฌ ๊ตฌํํ๋ค.
- ๋ฏธ์
๊ตฌํ์ ์๋ฃํ ํ GitHub์ ํตํด ์ ์ถํด์ผ ํ๋ค.
- Repository๋ฅผ forkํ ์ดํ, ๋ฏธ์ ์ ๊ตฌํํ๊ณ commit & pushํ๋ค.
- ๋ฏธ์ ์ ์๋ฃํ ์ดํ, ๋ณธ์ธ์ Github ๋๋ค์์ ๋ธ๋์น์ Pull Request๋ฅผ ๋ณด๋ธ๋ค.
- ๋ณธ์ธ์ Github ๋๋ค์์ ๋ธ๋์น๋ ๊ด๋ฆฌ์์๊ฒ ์์ฒญํ์ฌ ์์ฑํ ์ ์๋ค.
- ๋ฏธ์
์ ์งํํ๋ฉด์ ํ์ตํ ๋ด์ฉ์ ์ ๋ฆฌํ
docs
ํด๋์how-to-solve.md
ํ์ผ์ ์์ฑํ๋ค.- ๋ธ๋ก๊ทธ, ๋ ธ์ ๋ฑ ๊ฐ์ธ ํ์ต ๋ ธํธ์ ์์ฑํ ๊ธ์ ๋ณต์ฌํ๊ฑฐ๋ ์จ๋ผ์ธ์ผ๋ก ๊ฒ์๋ ๊ธ์ ๋งํฌ๋ฅผ ์ฒจ๋ถํด๋ ๋๋ค.
๋ชฉํ: 1๋ถ ๋ด์ ๋งค์ง๋๋ ์ธ๊ธฐ ์๋ ํ์ฑ ์ฌํ ํฐ์ผ ํ๋งค ์์คํ ์ ์ํ ํฐ์ผ ์ฌ๊ณ ๊ด๋ฆฌ ์์คํ ์ ๊ตฌํ
-
๊ณ์ ๋น ๊ตฌ๋งค ๊ฐ๋ฅ ์๋ ์ ํ
- ๊ณ์ ๋น ๊ตฌ๋งคํ ์ ์๋ ํ์ฑ(Mars)์, ๊ธ์ฑ(Venus)์ ํฐ์ผ์ ์ด 2์ฅ์ผ๋ก ์ ํํ๋ค.
- ์) ๊ธ์ฑ์ 2์ฅ๊ณผ ํ์ฑ์ 2์ฅ(์ด 4์ฅ)์ ๊ตฌ๋งค ๋ถ๊ฐ. ๊ธ์ฑ์ 1์ฅ๊ณผ ํ์ฑ์ 1์ฅ(์ด 2์ฅ)์ ๊ตฌ๋งค ๊ฐ๋ฅ.
-
ํฐ์ผ ์ด๊ณผ ํ๋งค ๋ฐฉ์ง
- ๋ณด์ ํ๊ณ ์๋ ํฐ์ผ๋ณด๋ค ๋ ๋ง์ ํฐ์ผ์ด ํ๋งค๋์ง ์๋๋ก ์ฌ๊ณ ๋ฅผ ์ฒ ์ ํ ๊ด๋ฆฌํด์ผ ํ๋ค.
- ๋งคํฌ๋ก๋ฅผ ์ฌ์ฉํ๋ ๋ถ์ ์ฌ์ฉ์๋ก ์ธํด ํ๋์ ๊ณ์ ์์ ์๋ง์ ํฐ์ผ ๊ตฌ๋งค ์์ฒญ์ด ์ฌ ์ ์๋ค.
-
์ด๋น ์ต์ 1,000์ฅ์ ํฐ์ผ ๊ตฌ๋งค ์ฒ๋ฆฌ ์ฑ๋ฅ ์๊ตฌ
- 5๋ง ์ฅ์ ํฐ์ผ์ด 1๋ถ ๋ด์ ๋งค์ง๋๊ธฐ ๋๋ฌธ์, ์ด๋น ์ต์ 1,000์ฅ์ ํฐ์ผ ๊ตฌ๋งค๊ฐ ๊ฐ๋ฅํ ์์คํ ์ ์ค๊ณํด์ผ ํ๋ค.
- ๊ตฌ๋งค์ ์คํจํ ์์ฒญ(๊ณ์ข ์์ก ๋ถ์กฑ, ์นด๋ ๋น๋ฐ๋ฒํธ ์ค๋ฅ ๋ฑ)๋ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ์ด๋น 1,000๊ฐ ์ด์์ ๊ตฌ๋งค ์์ฒญ์ด ๋ฐ์ํ ๊ฒ์ ์ผ๋์ ๋ฌ์ผ ํ๋ค.
์ ์๊ตฌ์ฌํญ์ด ๋ง์กฑ๋์์์ ํ
์คํธ ์ฝ๋๋ฅผ ํตํด ๊ฒ์ฆ๋์ด์ผ ํ๋ค.
com.aengdulab.ticket.MissionTest
์ ํ
์คํธ๊ฐ ๋ชจ๋ ํต๊ณผํ๋ฉด ์๊ตฌ์ฌํญ์ ๋ง์กฑํ๋ค.
- JDK 21 ๋ฒ์ ์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํ์ง๋ง ๋ค๋ฅธ ๋ฒ์ ์ ์ฌ์ฉํด๋ ๋ฌด๋ฐฉํ๋ค.
- README.md์ ํ ์คํธ ์ฝ๋๋ ์์ ํ์ง ์๋๋ค.
- ํ
์คํธ๋ฅผ ์ ์ธํ
build.gradle
,docker-compose.yml
๋ฑ ๋ชจ๋ ํ์ผ์ ๋ณ๊ฒฝํด๋ ๋๋ค. - ๋ช ํํ ์ด์ ์์ด๋ ํ์ผ, ํจํค์ง ์ด๋ฆ์ ์์ ํ๊ฑฐ๋ ์ด๋ํ์ง ์๋๋ค.
- ์ฝ๋๋ฅผ ๊น๋ํ๊ฒ ์ ์งํ๋ค.
๋ฏธ์ ์ ์งํํ๋ฉด์ ๋์์ด ๋ ๋งํ ๋ด์ฉ์ ์ ๋ฆฌํ๋ค.
๋ฏธ์
์์ ์ฌ์ฉํ๋ MySQL์ Docker ์ปจํ
์ด๋์ Docker Compose ๊ด๋ฆฌ๋๊ณ ์๋ค. Docker๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
์๋ ๋ช
๋ น์ด๋ ๋ชจ๋ Docker Compose ๋ช
๋ น์ด๋ก docker-compose.yml์ด ์๋ ./docker ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํด์ ์
๋ ฅํด์ผ ํ๋ค.
- ์ปจํ
์ด๋๋ฅผ ์คํํ๋ ค๋ฉด ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํ๋ค.
docker-compose up -d
- ์ปจํ
์ด๋๊ฐ ์ ์์ ์ผ๋ก ์คํ๋์๋์ง ํ์ธํ๋ ค๋ฉด ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํ๋ค.
docker-compose ps
- ์ปจํ
์ด๋ ๋ก๊ทธ๋ฅผ ํ์ธํ๋ ค๋ฉด ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํ๋ค.
docker-compose logs -f
- ์ปจํ
์ด๋๋ฅผ ์ข
๋ฃํ๋ ค๋ฉด ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํ๋ค.
docker-compose down
- ์ปจํ
์ด๋๋ฅผ ์ข
๋ฃํ๊ณ ์ญ์ ํ๋ ค๋ฉด ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํ๋ค.
docker-compose down --rmi all
- MySQL ์ปจํ
์ด๋์ ์ ์ํ๋ ค๋ฉด ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํ๋ค.
docker-compose exec mysql mysql -u root -p
- MySQL ์คํค๋ง(schema.sql)๋ฅผ ๋ณ๊ฒฝํ ๊ฒฝ์ฐ์๋ ๋ค์์ ๋ฐ๋์ ์ํํด์ผ ํ๋ค.
- ./docker/db/mysql/data ๋๋ ํ ๋ฆฌ๋ฅผ ์ญ์ ํ๋ค.
- ์ปจํ
์ด๋๋ฅผ ๋ค์ ์คํํ๋ค.
docker-compose down --rmi all docker-compose up -d
๋ฌธ์ ํด๊ฒฐ ๋ฐฉํฅ์ฑ์ ์ก์ง ๋ชปํ ๋, ๋ค์ ํค์๋๋ฅผ ํ์ตํด ๋ณด์.
- ํธ๋์ญ์ (Transaction)
- Deadlock
- S-๋ฝ(Shared Lock), X-๋ฝ(Exclusive Lock)
- Java synchronized
- Spring @Transactional ํ๋ก์
- ๋๊ด๋ฝ(Optimistic Locking), ๋น๊ด๋ฝ(Pessimistic Locking)
- ์ฌ์๋(Retry)