๐ป ์ด๋ ฅ์
์๋ ํ์ธ์! (์ธ์ธ) ๊ฑด (์์นจ ํด) ์ฑ, ์์นจ ํด ๐๋ฅผ ์ธ์ฐ๋ ํจ๊ฑด์ฑ์ ๋๋ค.
์ฌ๋ํ๋ ์ฌ๋๊ณผ ํ๋ณตํ ๊ฐ์ ์ ๊พธ๋ฆฌ๊ณ ์ ๊ฐ ์ข์ํ๋ ์ผ์ ํ๋ฉฐ ์ด๊ธฐ ์ํด ๋ ธ๋ ฅํ๊ณ ์์ต๋๋ค.
ISTP - ๋ง๋ฅ ์ฌ์ฃผ๊พผ, ์ฅ์ธ
๊ณผ๋ฌตํ๋ฉฐ ์ ์ ๋ ํธ๊ธฐ์ฌ์ผ๋ก ์ธ์์ ๊ด์ฐฐํ๊ณ , ์ํฉ์ ํ์ ํ๋ ๋ฏผ๊ฐ์ฑ๊ณผ ๋๊ตฌ๋ฅผ ๋ค๋ฃจ๋ ๋ฐ์ด๋ ๋ฅ๋ ฅ์ด ์์ต๋๋ค. ๋ง์๊ฐ ์ ์ผ๋ฉฐ, ๋ ผ๋ฆฌ์ ์ด๊ณ ํฉ๋ฆฌ์ ์ ๋๋ค. ์ฌ์ค์ ์๋ฃ๋ฅผ ์ ๋ฆฌ/์กฐ์งํ๊ธฐ๋ฅผ ์ข์ํ๊ณ , ์ธ๊ณผ๊ด๊ณ๋ ๊ฐ๊ด์ ์๋ฆฌ์ ๊ด์ฌ์ด ๋ง์ต๋๋ค. ๋์น๊ฐ ๋น ๋ฆ ๋๋ค. ์กฐ์ฉํ ์๊ธฐ ์ผ๋ง ํ๊ณ ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง ์ฌ์ค ์ฃผ๋ณ ์ํฉ ํ์ ๋ ๋ค ํ๊ณ ์์ต๋๋ค.
์ถ๊ตฌ์ ์ปดํจํฐ ๊ฒ์์ ์ฆ๊ธฐ๋ฉฐ ๋๋ฉด์ ์ข์ํ๊ณ ์ ์ธ์ ์ํ๋ ์ด๋ฐ์ ํ์์ ๋๋ค.
ํจ์จ์ ๋๋ค.
์ต์ํ์ ๋ ธ๋ ฅ์ผ๋ก ์ต๋ํ์ ์ฑ๊ณผ๋ฅผ ์ป๊ธฐ ์ํด ํญ์ ์๊ฐํ๋ฉฐ ๋ ธ๋ ฅํฉ๋๋ค. ์ด๋ ํ ์ผ์ ์งํํ ๋, ์ ํ์ง๋ฅผ ๋์ดํ๊ณ ๊ทธ ์ค ๊ฐ์ฅ ์ต๋์ ํจ์จ์ ๋ผ ์ ์๋ ์ ํ์ง๋ฅผ ์ ํํฉ๋๋ค.
-
๊ฐ์ฒ๋ํ๊ต ์ํํธ์จ์ดํ๊ณผ
-
๊ฐ์ฒ๋ํ๊ต ์นด์นด์ค์ํฐํ๋ผ์ด์ฆ SW ์์นด๋ฐ๋ฏธ 2๊ธฐ
- ๊ธฐ๊ฐ: 2023.03.02 ~ 2023.08.31 (6 ๊ฐ์)
- ์ฐธ์ฌ ๊ธฐ์
:
KaKao Enterprise
,DKTechin
,ExnTu
์ ์ ๋ฌธ๊ฐ 10๋ช - ๊ธฐ์ ์์ ๋ํ AIโง์ํํธ์จ์ดํ๋ถ์ ๋ถํธ์บ ํํ ์ํํธ์จ์ด ์์นด๋ฐ๋ฏธ๋ฅผ ๊ฐ์ค
- ์ํํธ์จ์ด ์ด๋ก ๊ณผ ํ๋ก์ ํธ ์ค์ฌ ํ๋ จ์ ํตํด ๋จ์ ์ฝ๋ฉ ๊ธฐ์ ์ด์์ ์ธ๋ ฅ ์์ฑ
- ํ๋ ๋ด์ญ
- ์นด์นด์ค ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ์ค๋ฌธ ๊ด๋ฆฌ ์๋น์ค
WaveForm
๋ฐฑ์๋ ๊ฐ๋ฐ - ์นด์นด์ค ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ์ฌ๋ด ๋ฆด๋ฆฌ์ฆ ๋
ธํธ ๊ณต์ ์์คํ
์ฐ๋ฆฌ๋๋ฆฌ
ํ๋ก ํธ์๋ ๊ฐ๋ฐ ๋ฐ์ดํฐ๊ด๋ฆฌ๊ธฐ์
,์์คํ ์ํคํ ์ฒ
,์ฑ๋ด
๊ฐ์ ์๊ฐ
- ์นด์นด์ค ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ์ค๋ฌธ ๊ด๋ฆฌ ์๋น์ค
-
๊ฐ์ฒ๋ x Elastic Observability
- ๊ธฐ๊ฐ: 2023.08.21 ~ 2023.08.27
- ์ฐธ์ฌ ๊ธฐ์
:
AWS
,Elastic
,LLOYDK
- ๋ํ ์ค๋ช
:
Observability
๋ฅผ ํ์ฉํ ๋ฐ์ดํฐ ๋ถ์- ์ด์ ์ค์ธ
App/Web
ํ๊ฒฝ ๋ชจ๋ํฐ๋ง ๋ฐDashboard
๊ตฌ์ถ - ์ ๊ณต๋๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐํ์ผ๋ก
Metric
๋ถ์Dashboard
๊ตฌ์ถ Multi Cloud
ํ๊ฒฝ ๋ชจ๋ํฐ๋งDashboard
๊ตฌ์ถ- ๋ค์ํ
Cloud
ํ๊ฒฝ์Log
๋ฅผ ์์งํ์ฌ ํตํฉDashboard
๊ตฌ์ถ
- ์ด์ ์ค์ธ
- ํ๋ ๋ด์ญ
- ํ์ด์ฌ ํ๋ก์ ํธ์ธ AI ํฌ๊ธฐ์ฅ์
EC2
์ ์ฌ๋ ค์ ๋ก๊ทธ์metric
์ ๋ณด ์ถ์ถ Elastic Agent
๋ฅผ ํตํด ์ ๋ณด๋ฅผ ์ถ์ถํ๊ณ ๋์๋ณด๋ํ- ์ด๋ ๋ถ์ผ์์ ์ด๋ AI๊ฐ ๋ง์ ์ ํ์ ๋ฐ์๋์ง ๋ฑ์ ์ ๋ณด ์๊ฐํ
EC2
์metric
์ ๋ณด๋ฅผ ์ถ์ถํ์ฌcpu ์ฌ์ฉ๋
๊ณผmemory ์ฌ์ฉ๋
์ด ์๊ณ์น๋ฅผ ๋์ผ๋ฉดslack๊ณผ ๋ฉ์ผ
๋ก ์๋ฆผ ์ค์
- ํ์ด์ฌ ํ๋ก์ ํธ์ธ AI ํฌ๊ธฐ์ฅ์
- ์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ
GCP๊ธฐ๋ฐ MSA ์ํคํ ์ฒ์ ์ค๋ฌธ ๊ด๋ฆฌ ์๋น์ค - ๊ฐ์ ํ๋ก์ ํธ
- ๊ธฐ๊ฐ : 2023๋ 10์ 2์ผ ~ 2024๋ 4์ (6 ๊ฐ์)
- GitHub
- Notion : - ๊ฐ์ ํ๋ก์ ํธ
- ๊ฐ์ : ์นด์นด์ค ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ MSA ์ํคํ ์ฒ์ ์ค๋ฌธ ๊ด๋ฆฌ ์๋น์ค ์ ๊ฐ์ ํ๊ธฐ ์ํด ์์ํ ํ๋ก์ ํธ์ ๋๋ค.
- ๊ธฐ์ ์คํ :
SpringBoot, Spring Cloud Gateway, Spring Security, Gradle, JUnit5, Mockito, queryDsl, Docker, Kubernetes, GitHub, Jenkins, MySQL, MySQLOpretor, Prometheus, Grafana, Elastic, Kibana, Fluentd, GKE, GCP, Swagger, Redis, ArgoCD, Slack, nGrinder
- ๊ฐ์ฒด ์งํฅ ์ค๊ณ ์์น์ ๋จ์ผ ์ฑ
์ ์์น์ ๋ฐ๋ผ
DTO <-> Entity
๋ณํ ์๋น์ค ๊ตฌํ - ๊ฐ๋ฐฉ - ํ์ ์์น์ ๋ฐ๋ผ
OAuth
์๋ฒProvider
์ถ์ํ Spring Security
์Filter
๋ฅผ ํ์ฉํJWT
์ธ์ฆ ์ฒ๋ฆฌRestControllerAdvice
๋ฅผ ์ด์ฉํ ์ ์ญ ์ปค์คํ ์๋ฌ ์ฒ๋ฆฌ ๋ฉ์ปค๋์ฆ ๊ตฌํRestTemplate
์ ๋ฐ๋ณต์ ์ธ ์ธ์คํด์ค ์์ฑ ๋ก์ง์WebCilent
์คํ๋ง ๋น ๋ฑ๋ก์ ํตํด ์ธ์คํด์ค ์์ฑ ๋น์ฉ ์ ๊ฐ๊ณผ ๋น๋๊ธฐ์ /๋ ผ๋ธ๋กํน ๋ฐฉ์์ผ๋ก ์ ํํ์ฌ ์ฑ๋ฅ ๊ฐ์- ๋์์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ถ์ฐ๋ฝ์ ๊ฐ๋
์ ๋์
ํ๊ณ , ์ด๋ฅผ
AOP
๋ฅผ ํตํด ์ ์ฉํ์ฌ ๊ด์ฌ์ฌ ๋ถ๋ฆฌ QueryDsl
๋ฅผ ์ด์ฉํ ๋์ ์ฟผ๋ฆฌ๋ก ์ฌ์ฌ์ฉ์ฑ ์ฆ๋ ๋ฐfetch join
์batch size
์ ์ฉ์ ํตํดN+1
๋ฌธ์ ํด๊ฒฐMSA
์ํคํ ์ฒ๋ฅผ ๊ณ ๋ คํ์ฌRedis
ํด๋ก์คํฐ๋ฅผ ํ์ฉํ ๊ธ๋ก๋ฒ ์บ์ ์ ์ฉ- ์บ์ฑ ์ ์ฉ,
DB
์ฟผ๋ฆฌ ๊ฐ์ ,DB
์ธ๋ฑ์ฑ ์์ ,DB
์ปค๋ฅ์ ํ ์กฐ์ , ๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ฑ ์ฑ๋ฅ ์ต์ ํ- TPS 60.4 โ 841.4๋ก 14 ๋ฐฐ์ ๋ฌํ๋ ์ฑ๋ฅ ํฅ์
MySQL Operator
๋ฅผ ํ์ฉํ์ฌSingle Primary
๋ฐฉ์์ผ๋กMySQL InnoDB
ํด๋ฌ์คํฐ๋ฅผ ๊ด๋ฆฌํ๊ณ ,MySQL Group Replication
์ ์คํ- ์ปค๋ฒ๋ฆฌ์ง
100%
๋ฅผ ๋ชฉํ๋กMockito & JUnit5
๋ฅผ ์ด์ฉํ 113 ๊ฐ์ ๋จ์ ํ ์คํธ ์์ฑ SpringBootTest
๋ฅผ ์ด์ฉํ 34 ๊ฐ์ ํตํฉ ํ ์คํธ ์ฝ๋๋ฅผ ํตํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๋ฐ์ ์ธ ๊ธฐ๋ฅ ๊ฒ์ฆSwagger
๋ฅผ ํ์ฉํAPI
๋ฌธ์ ์๋ํGoogle Cloud Platform
์ผ๋ก ๋ฐฐํฌ ํ๊ฒฝ ๋ณ๊ฒฝNginX
๋ก๋๋ฐธ๋ฐ์ฑ์ ํตํด ์์คํ ๊ฐ์ฉ์ฑ ์ฆ๊ฐGitHub - Jenkins - Docker - ArgoCD
CI/CD
ํ์ดํ๋ผ์ธ ๊ตฌ์ถํ์ฌ ๋ฐฐํฌ ์๋ํNFS
๋ฅผ ์ด์ฉํDB
๋ฐฑ์ ๊ตฌํPrometheus & Grafana
,EFK
๋ฅผ ํ์ฉํ ๋ชจ๋ํฐ๋ง ์์คํ ๊ตฌ์ถSlack
๊ณผ์ ์ฐ๋์ ํตํด ์๋ฆผ ๋๊ตฌ๋ฅผ ๊ตฌํํ์ฌ ์ด์ ํจ์จ์ฑ ๊ฐ์Helm
,TerraForm
์ ํตํด ์ธํ๋ผ ๋ฐ ์๋น์ค ๋ฆฌ์์ค ๊ด๋ฆฌ๋ฅผ ์๋ํ
์จํ๋ผ๋ฏธ์ค ๊ธฐ๋ฐ MSA ์ํคํ ์ฒ์ ์ค๋ฌธ ๊ด๋ฆฌ ์๋น์ค
- ๊ธฐ๊ฐ : 2023๋ 3์ 2์ผ ~ 2023๋ 6์ 9์ผ (3 ๊ฐ์)
- GitHub : https://github.com/KEA-SWAVE-SURVEY
- Notion : ์นด์นด์ค ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ MSA ์ํคํ ์ฒ์ ์ค๋ฌธ ๊ด๋ฆฌ ์๋น์ค
- ๊ธฐ์ ์คํ :
SpringBoot, Spring Cloud Gateway, Gradle, JUnit5, queryDsl, Docker, Kubernetes, GitHub, Jenkins, MySQL, Redis, ArgoCD, Slack, nGrinder
- ๊ฐ์ : ๋ณธ ํ๋ก์ ํธ๋ ์นด์นด์ค์ํฐํ๋ผ์ด์ฆ ๊ฐ์ฒ SW ์์นด๋ฐ๋ฏธ ์๋ฃ ์ค ์งํํ ์นด์นด์ค ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ MSA ์ํคํ ์ฒ์ ์ค๋ฌธ ๊ด๋ฆฌ ์๋น์ค์ด๋ฉฐ ์ ๋ ์ด 6๋ช ์ ํ์ ์ค 3๋ช ์ ๋ฐฑ์๋ ํ์์ BackEnd ๊ฐ๋ฐ์ 40% ๊ธฐ์ฌํ์ต๋๋ค.
- ์ญํ
- ์ค๋ฌธ ์๋ต, ๋ถ์์ ์ ๋ฐ์ ์ธ
CRUD
API
๊ฐ๋ฐ(์ ์ฒดAPI
์ค 40%) MSA
์ํคํ ์ฒ๋ฅผ ๋์ ํ๋ฉด์ ๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ(DDD
)๋ฅผ ์ด์ฉํ์ฌ ๋ชจ๋ ๋ถ๋ฆฌREST API
๋ก ์๋น์ค๋ค๊ฐ์ ํต์ ๊ตฌํKubernetes
์์Spring Cloud Gateway
, ์ค๋ฌธ ์๋ต, ๋ถ์ ์๋น์ค ๋ฐฐํฌOAuth2
API
๋ฅผ ์ด์ฉํGitHub
์Google
์์ ๋ก๊ทธ์ธ ๊ตฌํSpring Security
์JWT Token
๋ฅผ ์ด์ฉํ ์ธ์ฆ๊ณผ ๊ถํ ๊ด๋ฆฌRedis
๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ์บ์ฑ ์ ์ฉnGrinder
๋ฅผ ํตํ ์ฑ๋ฅ ํ ์คํธ ์ํJUnit
Mockito
๋ฅผ ์ฌ์ฉํ ํ ์คํธ ์์ฑ
- ์ค๋ฌธ ์๋ต, ๋ถ์์ ์ ๋ฐ์ ์ธ
- ๊ธฐํ ๋๊ธฐ, ๊ธฐ์กด ์ ํ ๋ถ์, ์๊ตฌ์ฌํญ ๋ถ์,
WBS
, ๋ค์ด์ด๊ทธ๋จ, ์คํ ๋ฆฌ ๋ณด๋,UI&UX
,ERD
,API
๋ช ์ธ์, ์์คํ ์ํคํ ์ฒ๊น์ง ์ ๋ฐ์ ์ธIT
์๋น์ค ๊ณผ์ ์ ๊ฒฝํ
์นด์นด์ค ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ์ฌ๋ด ๋ฆด๋ฆฌ์ฆ ๋ ธํธ ๊ณต์ ์์คํ - <์ฐ๋ฆฌ๋๋ฆฌ>
- ๊ธฐ๊ฐ : 2023๋ 7์ 4์ผ ~ 2023๋ 8์ 25์ผ (2 ๊ฐ์)
- GitHub : https://github.com/SwaveReleaseNote
- Notion : ์นด์นด์ค ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ์ฌ๋ด ๋ฆด๋ฆฌ์ฆ ๋ ธํธ ๊ณต์ ์์คํ - <์ฐ๋ฆฌ๋๋ฆฌ>
- ๊ธฐ์ ์คํ :
TypeScript, Pnpm, Recoil, ReactQuery, Axios, Jest, Cypress, Jenkins, Github, Docker, Kubernetes, Kakao I Cloud, ArgoCD, Nginx, Slack, Jira, Figma, Swagger
- ๊ฐ์ : ๋ณธ ํ๋ก์ ํธ๋ ์นด์นด์ค์ํฐํ๋ผ์ด์ฆ ๊ฐ์ฒ SW ์์นด๋ฐ๋ฏธ ์๋ฃ ์ค ์งํํ ์นด์นด์ค ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ์ฌ๋ด ๋ฆด๋ฆฌ์ฆ ๋
ธํธ ๊ณต์ ์์คํ
์ด๋ฉฐ
KaKao Enterprise
,DKTechin
,ExnTu
์์ ์ฌ์ง ์ค์ด์ ์ ๋ฌธ๊ฐ 10๋ช ์๊ฒ ์ฝ๋ ๋ฆฌ๋ทฐ ๋ฐ ๋ฉํ ๋ง์ ๋ฐ์์ผ๋ฉฐ ์ ๋ ์ด 6๋ช ์ ํ์ ์ค 3๋ช ์ ํ๋ก ํธ์๋ ํ์์ FrontEnd ๊ฐ๋ฐ์ 60% ๊ธฐ์ฌํ์์ต๋๋ค. - ์ญํ
Git
ํ๋ก์ฐ ์ ๋ต,Github
๋ธ๋์น ์ปจ๋ฒค์ ๋ฐPR
ํ์ฑํ- ํ๋ก ํธ์๋ ํ ๊ฐ๋ฐ ๊ณต๋ ๊ท์น(ํจ์๋ช
, ๋ชจ๋๋ช
, ํจํค์ง๋ช
,
Prettier
,Eslint
) ์ ์ฉ GitHub - Jenkins - Docker - ArgoCD
CI/CD
ํ์ดํ๋ผ์ธ ๊ตฌ์ถํ์ฌ ๋ฐฐํฌ ์๋ํReactQuery
๋ฅผ ํตํ ํ๋ก ํธ์๋ ์บ์ฑ ์ ์ฉCypress
Jest
๋ฅผ ํตํ ํ ์คํธ ์์ฑAxios
์ธ์คํด์ค ๋ชจ๋ํํ์ฌ ์๋ฌ ์ฒ๋ฆฌ ๋ฐ ํต์ ๋ก์ง ๊ด๋ฆฌ- ์๋ฌ์ ๋ํ ๊ณตํต ํ์ด์ง ์์ฑํ์ฌ ์๋ฌ ๊ณตํต ์ฒ๋ฆฌ
๋ฐ์ผ๋ฆฌ ์คํฌ๋ผ
,์ฝ๋ ๋ฆฌ๋ทฐ
,๋ฉํ ๋ง
,PR
,Jira
๋ฅผ ํตํ ์ด์ ๊ด๋ฆฌ ๋ฑ์ ํตํ ์ฒด๊ณ์ ์ธ ํ์ ์งํ- ํ๋ก ํธ์๋๋ผ๋ ์ํ์ง ์์์ง๋ง ์ฃผ์ด์ง ์ ๋ฌด์ ์ต์ ์ ๋คํ๋ ๊ฒ์ด ์ค์ํ๋ค๊ณ ์๊ฐํ์ต๋๋ค. ๊ทธ ๊ฒฐ๊ณผ, ์ด ๊ฒฝํ์ ํตํด ๋ฌธ์ ๋ฅผ ๋ค์ํ ์๊ฐ์์ ๋ฐ๋ผ๋ณผ ์ ์๋ ๋ฅ๋ ฅ์ ๊ธฐ๋ฅด๊ฒ ๋์์ต๋๋ค.
- ๊ธฐํ ๋๊ธฐ, ๊ธฐ์กด ์ ํ ๋ถ์, ์๊ตฌ์ฌํญ ๋ถ์,
WBS
, ๋ค์ด์ด๊ทธ๋จ, ์คํ ๋ฆฌ ๋ณด๋,UI&UX
,ERD
,API
๋ช ์ธ์, ์์คํ ์ํคํ ์ฒ๊น์ง ์ ๋ฐ์ ์ธIT
์๋น์ค ๊ณผ์ ์ ๊ฒฝํ
- ํ๋ก๊ทธ๋๋จธ์ค ๋ญํน ๋ฑ์ง๋ฅผ svg ํํ๋ก ์ ๊ณตํ๋ ์๋ฐ ํ๋ก์ ํธ
- ๋ฐฑ์ค ํ๋ธ์ ์ฐ๋ํ์ฌ ํ๋ก๊ทธ๋๋จธ์ค์์ ๋ฌธ์ ๋ฅผ ํ๋ฉด ์๋์ผ๋ก ํ๋ก๊ทธ๋๋จธ์ค ๋ญํน ๋ฑ์ง๋ฅผ ์์ฑ ๋ฐ ์ ๋ฐ์ดํธํฉ๋๋ค.
- ๊นํ๋ธ ํ๋กํ์ ๋ฑ์ง๋ฅผ ๋ฑ๋กํ ์ ์์ต๋๋ค.
- ๊ธฐ๊ฐ : 2023.11.21 ~ (์งํ ์ค)
- ๊ฒ์๊ธ ์ : 298 ~ (์งํ ์ค)
-
[Spring + QueryDsl] DB ์ฟผ๋ฆฌ ์ ๋ฐ์ํ๋ N+1 ๋ฌธ์ ํด๊ฒฐ ๋ฐ ์ฑ๋ฅ ๊ฐ์
-
[Spring] REST API ํต์ ์ ์ฌ์ฉํด์ผ ํ HTTP ํด๋ผ์ด์ธํธ RestTemplate vs WebClient
-
[Spring] MSA ์ํคํ ์ฒ์ ๋ฐฑ์๋ ํ๋ก์ ํธ ํ ์คํธ ๋ฐฉ๋ฒ
-
์ค๋ผํด ํด๋ผ์ฐ๋(db - kafka) โ โ ๋ก์ปฌ(druid - superset)
-
gitlab-jenkins CI / CD๋ฅผ ์ํ ์์คํ ์ํคํ ์ฒ ๊ตฌ์ถ์ค์ต
์๋ฐ
์คํ๋ง
Spring-๊ฐ์-์คํ๋ง-ํต์ฌ-์๋ฆฌ-๊ธฐ๋ณธํธ ์๋ฃ์ฆ
โ Spring-๊ฐ์-์คํ๋ง-ํต์ฌ-์๋ฆฌ-๊ธฐ๋ณธํธ ์ ๋ฆฌ
Spring-๊ฐ์-์คํ๋ง-MVC-1ํธ-๋ฐฑ์๋-์น-๊ฐ๋ฐ-ํต์ฌ-๊ธฐ์ ์๋ฃ์ฆ
โ Spring-๊ฐ์-์คํ๋ง-MVC-1ํธ-๋ฐฑ์๋-์น-๊ฐ๋ฐ-ํต์ฌ-๊ธฐ์ ์ ๋ฆฌ
Spring-๊ฐ์-์คํ๋ง-MVC-2ํธ-๋ฐฑ์๋-์น-๊ฐ๋ฐ-ํ์ฉ-๊ธฐ์ ์๋ฃ์ฆ
โ Spring-๊ฐ์-์คํ๋ง-MVC-2ํธ-๋ฐฑ์๋-์น-๊ฐ๋ฐ-ํ์ฉ-๊ธฐ์ ์ ๋ฆฌ
Spring-๊ฐ์-์คํ๋ง-DB-1ํธ-๋ฐ์ดํฐ-์ ๊ทผ-ํต์ฌ-์๋ฆฌ ์๋ฃ์ฆ
โ Spring-๊ฐ์-์คํ๋ง-DB-1ํธ-๋ฐ์ดํฐ-์ ๊ทผ-ํต์ฌ-์๋ฆฌ ์ ๋ฆฌ
Spring-๊ฐ์-์คํ๋ง-DB-2ํธ-๋ฐ์ดํฐ-์ ๊ทผ-ํ์ฉ-๊ธฐ์ ์๋ฃ์ฆ
โ Spring-๊ฐ์-์คํ๋ง-DB-2ํธ-๋ฐ์ดํฐ-์ ๊ทผ-ํ์ฉ-๊ธฐ์ ์ ๋ฆฌ
์คํ๋ง ๋ถํธ์ JPA
์คํ๋ง-๋ถํธ์-JPA-๊ฐ์-์๋ฐ-ORM-ํ์ค-JPA-ํ๋ก๊ทธ๋๋ฐ-๊ธฐ๋ณธํธ ์๋ฃ์ฆ
โ ์คํ๋ง-๋ถํธ์-JPA-๊ฐ์-์๋ฐ-ORM-ํ์ค-JPA-ํ๋ก๊ทธ๋๋ฐ-๊ธฐ๋ณธํธ ์ ๋ฆฌ
์คํ๋ง-๋ถํธ์-JPA-์คํ๋ง-๋ถํธ์-JPA-ํ์ฉ1-์น-์ ํ๋ฆฌ์ผ์ด์ -๊ฐ๋ฐ ์๋ฃ์ฆ
โ ์คํ๋ง-๋ถํธ์-JPA-์คํ๋ง-๋ถํธ์-JPA-ํ์ฉ1-์น-์ ํ๋ฆฌ์ผ์ด์ -๊ฐ๋ฐ ์ ๋ฆฌ
์คํ๋ง-๋ถํธ์-JPA-์คํ๋ง-๋ถํธ์-JPA-ํ์ฉ2-API-๊ฐ๋ฐ๊ณผ-์ฑ๋ฅ-์ต์ ํ ์๋ฃ์ฆ
โ ์คํ๋ง-๋ถํธ์-JPA-์คํ๋ง-๋ถํธ์-JPA-ํ์ฉ2-API-๊ฐ๋ฐ๊ณผ-์ฑ๋ฅ-์ต์ ํ ์ ๋ฆฌ
์คํ๋ง-๋ถํธ์-JPA-์คํ๋ง-๋ฐ์ดํฐ-JPA ์๋ฃ์ฆ
โ ์คํ๋ง-๋ถํธ์-JPA-์คํ๋ง-๋ฐ์ดํฐ-JPA ์ ๋ฆฌ