-
Notifications
You must be signed in to change notification settings - Fork 0
Tech Stack
Yeonhee Kim edited this page Aug 28, 2021
·
45 revisions
[๊ธฐ์ ์คํ ์๊ฐํ ์ด๋ฏธ์ง]
- Java ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ถ์ ์ํด์ JDK(Java Development Kit)๊ฐ ํ์์ ์ธ๋ฐ JDK์๋ Oracle JDK์ OpenJDK๊ฐ ์๋ค.
- ์ค๋ผํด์ ๋ผ์ด์ ์ค ์ฒด๊ณ๊ฐ ๋ณ๊ฒฝ๋๋ฉด์ 2019๋ 1์ ์ดํ๋ก๋ Oracle JDK๋ฅผ ๋ฌด๋ฃ๋ก ์ฌ์ฉํ ์ ์๊ณ , OpenJDK๋ง ๋ฌด๋ฃ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
- Gradle์ ๋น๋๋ฅผ xml๋ก ์ ์ํ๋ Maven๊ณผ ๋ฌ๋ฆฌ Groovy ์ธ์ด๋ก ์ ์ํ์ฌ ๋ฌธ์์ ์์ด ์ค์ด๋ค๊ฒ ๋๊ณ ๋น๋ ์๋๋ Maven๋ณด๋ค Gradle์ด ๋ ๋น ๋ฅด๋ค. ์๋ฐ ๋น๋๋๊ตฌ๋ก Gradle๋ณด๋ค Maven์ ๋ ์ต์ํ์ง๋ง ์ ์ Gradle๋ ๋ง์ด ์ฌ์ฉํ๋ ์ถ์ธ์ด๋ฏ๋ก ๋ฐฐ์ฐ๋ฉด์ ์ ์ฉํด๋ณด๋ ค๊ณ ํ๋ค.
- ์คํ๋ง ํ๋ ์์ํฌ๋ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ธ ์๋ฐ์ ํน์ฑ์ ์ ์ด๋ ค์ฃผ๋ ํ๋ ์์ํฌ์ด๋ค. ์คํ๋ง๋ถํธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก tomcat์ด ๋ด์ฅ๋์ด ์๊ณ ์คํ๋ง๊ณผ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์๋์ ์ผ๋ก ๊ตฌ์ฑํด์ฃผ๋ฏ๋ก ๋ณด๋ค ๋น ๋ฅธ ๊ฐ๋ฐ์ ๊ฐ๋ฅํ๊ฒ ํ๋ค.
- Swagger๋ ๊ฐํธํ๊ฒ ์ ์ฉํ ์ ์๊ณ API๋ฅผ ํ ์คํธํ ์ ์์ง๋ง, ์๋น์ค ์ฝ๋์ Swagger ๊ด๋ จ ์ด๋ ธํ ์ด์ ์ ์ถ๊ฐํด์ค์ผ ํ๊ณ ๋ฌธ์๋ง์ผ๋ก ์ฐ๋ ์์คํ ์ ๋ง๋ค๊ธฐ ์ด๋ ต๋ค.
- ์ด์ ๋ฐํด Spring Rest Docs๋ ์ฒ์์๋ ์ ์ฉํ๊ธฐ ์ด๋ ต๊ณ ํ ์คํธ ์ฝ๋๋ฅผ ๋ฐ๋์ ์์ฑํด์ผ ํ์ง๋ง, ์๋น์ค ์ฝ๋์ ์ํฅ์ ์ฃผ์ง ์๊ณ API๋ฅผ ์๋์ผ๋ก ๋ฌธ์ํํ ์ ์๋ค.
- TDD๋ฅผ ๊ณต๋ถํ๋ฉฐ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ ๊ณํ์ด๋ฉฐ ์๋ํ๋ฅผ ์งํฅํ๋ฏ๋ก Spring Rest Docs๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ๋ค.
- ์ฐ๋ฆฌ ํ๋ก์ ํธ์ ํน์ง์ ํ๋ก์ ํธ ๊ตฌํ ๋ฒ ๋ฅดํฌ์ ์๋ก์ด ์ฑ ์ด ์ ๋ก๋๋ ๋๋ง๋ค ์ฐ๋ฆฌ ์ชฝ DB์๋ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ์ด ๋์ด์ผ ํ๋ค. ํ๋ก์ ํธ ๊ตฌํ ๋ฒ ๋ฅดํฌ๋ก๋ถํฐ ๊ฐ์ ธ์ฌ ๋ฐ์ดํฐ ๊ตฌ์กฐ๊ฐ ๋ช ํํ๋ฏ๋ก ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ค๋ณต์์ด ํ๋ฒ๋ง ์ ์ฅํ ์ ์๋ RDBMS๋ฅผ ์ ํํ๋ค.
- NoSQL์ ๋์ฉ๋ ๋ฐ์ดํฐ์ ์ฝ๊ธฐ์ ์ ๋ฆฌํ์ง๋ง, ์ฐ๋ฆฌ ํ๋ก์ ํธ์์ ํนํ ์ฑ ๋ฒ์ญ๋ฌธ ํ ์ด๋ธ์ ์์ ์ด ์์ฃผ ์ผ์ด๋๊ณ ํ์ ํ ์ด๋ธ, ์ฑ ์ ๋ณด ํ ์ด๋ธ, ์ฑ ์๋ฌธ ํ ์ด๋ธ, ์ฑ ๋ฒ์ญ๋ฌธ ํ ์ด๋ธ ๋ฑ ๊ด๊ณ๋ฅผ ๋งบ๊ณ ์๋ ๋ถ๋ถ์ด ๋ง์์ ์กฐ์ธ ์ฐ์ฐ์ด ๊ฐ๋ฅํ RDBMS๊ฐ ๋ ์ ํฉํ๋ค.
- ์คํ์์ค RDBMS ์ค์์๋ PostgreSQL๋ณด๋ค MySQL์ด UPDATE๋ฌธ ์ฑ๋ฅ์ด ๋ ์ข์ ์ ์ ๊ณ ๋ คํ์ฌ MySQL์ ์ ํํ๋ค.
- PostgreSQL์ UPDATE๋ฅผ ํ ๋ ๊ณผ๊ฑฐ ํ์ ์ญ์ ํ๊ณ INSERT์ฒ๋ผ ๋ณ๊ฒฝ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง ์๋ก์ด ํ์ ์ถ๊ฐํ๋ ํํ๋ผ์ UPDATE๊ฐ ๋๋ฆฌ๋ค.
- SQL Mapper๋ ์๋ฐ ์ฝ๋๋ก๋ถํฐ SQL์ xml๋ก ๋ถ๋ฆฌํด์ค๋ค. SQL๋ฌธ์ ๊ทธ๋๋ก ์ฌ์ฉํ์ฌ ๋ณต์กํ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ ๋๋ ํธ๋ฆฌํ์ง๋ง, RDBMS์ ์ข ์์ ์ด๋ฉฐ ์๋ฐ ํด๋์ค์ DB ํ ์ด๋ธ์ด ๊ฐํ๊ฒ ์ฐ๊ฒฐ๋์ด ์์ด์ ์ ์ง๋ณด์์ฑ์ด ๋จ์ด์ง๋ค. ๋ํ์ ์ธ SQL Mapper๋ก MyBatis๊ฐ ์๋ค.
- ORM์ SQL๋ฌธ์ ์์ฑํ์ง ์๊ณ RDBMS๋ฅผ ์กฐ์ํ๊ฒ ํด์ค๋ค. ๋ณต์กํ SQL๋ฌธ์ ์ฒ๋ฆฌํ ๋๋ ์๋์ ์ผ๋ก ์ด๋ ค์์ด ์์ง๋ง, ๊ฐ์ฒด ์งํฅ์ ์ธ ํน์ฑ์ ๋ณด๋ค ๋ ์ด๋ ค์ SQL์ ์์กด์ ์ธ ๊ฐ๋ฐ์ ๊ทน๋ณตํ๊ฒ ํด์ฃผ๊ณ RDBMS๋ก๋ถํฐ ๋ ๋ฆฝ์ ์ด๋ฉฐ ์ ์ง๋ณด์์ ๋ณด๋ค ์ฉ์ดํ๋ค.
- ๊ฐ๋จํ CRUD์๋ SQL Mapper๋ณด๋ค ORM์ด ์ ๋ฆฌํ๋ฉฐ ์ฐ๋ฆฌ ํ๋ก์ ํธ์์ ๋๋ถ๋ถ์ ์ฟผ๋ฆฌ๋ฌธ์ ORM์ผ๋ก ๋ค๋ฃฐ ์ ์์ ๊ฒ์ผ๋ก ์๊ฐ๋๋ฏ๋ก ORM์ ์ฌ์ฉํ๊ณ ์ ํ๋ค.
- ๋ฐ๋ผ์ ์๋ฐ ์ง์์ ORM ๊ธฐ์ ํ์ค์ธ JPA๋ฅผ ์ฌ์ฉํ ๊ฒ์ด๋ฉฐ, ์คํ๋ง์์ ์ ๊ณตํ๋ ๋ชจ๋ ์ค ํ๋์ธ Spring Data JPA๋ฅผ ์ฌ์ฉํ ๊ฒ์ด๋ค.
- ๋ํ์ ์ธ ํด๋ผ์ฐ๋ ์๋น์ค ์ ๊ณต์ฌ๋ก AWS, Microsoft Azure, GCP๊ฐ ์๋๋ฐ, ์ ๊ณ์์๋ AWS๊ฐ ๊ฐ์ฅ ์ ์ ์จ์ด ๋๋ค.
- AWS๋ ์ ๊ท ๊ณ ๊ฐ์๊ฒ 1๋ ๋์ ๋ฌด๋ฃ๋ก ํ๋ฆฌํฐ์ด๋ฅผ ์ ๊ณตํ๊ณ ํ์ฌ ์ฌ์ง ์ค์ธ ํ์ฌ์์๋ AWS๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ์ค์ค๋ก AWS ์๋ฒ๋ฅผ ๊ตฌ์ถํ๊ณ ์ค์ตํด๋ณด๊ณ ์ถ์ด์ ์ ํํ๋ค.
- ์คํ์์ค CI/CD ์๋ฃจ์
์ผ๋ก Jenkins์ Travis CI ์ค์์ ๊ณ ๋ฏผํ๋ค๊ฐ Travis CI๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ํ๋ค.
- Jenkins๋ ํ๋ฌ๊ทธ์ธ์ ์ข ๋ฅ๊ฐ ๋ค์ํ๊ณ ๋ชจ๋ ๋ถ๋ถ์ ์ง์ ๊ด๋ฆฌํ ์ ์์ง๋ง ์๋ฒ ์ด์ ๋น์ฉ์ด ๋ฐ๋ก ๋ฐ์ํ๋ค.
- ์ฐ๋ฆฌ ํ๋ก์ ํธ๋ ๊ท๋ชจ๊ฐ ์์ ํ๋ก์ ํธ์ ํด๋น๋๋ฏ๋ก Jenkins์ ๋นํด ํ๋ฌ๊ทธ์ธ ์ข ๋ฅ๋ ์ ์ง๋ง ์ง์ ์๋ฒ๋ฅผ ์ด์ํ ํ์๊ฐ ์๋ Travis CI๋ฅผ ์ฌ์ฉํด๋ณด๋ ค๊ณ ํ๋ค.
- SPA ํ๋ ์์ํฌ / React / Vue / Angular