| ์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- Jenkins
- SpringBoot
- ์ฝํ
- ๋ ผ๋ธ๋กํน
- spring
- dockerhub
- ์ฝ๋ฉํ ์คํธ
- ์ฟ ๋ฒ๋คํฐ์ค
- spring scheduler
- db์ํคํ ์ณ
- db์ ๋ต
- ์ค๋ธ์
- React
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- docker
- @scheduler
- Personal Access Token
- MySQL
- GoogleLogin
- ๋์์ธํจํด
- java์ฑํ
- CICD
- injection๊ณต๊ฒฉ
- Node.js
- oauth
- ์๊ณ ๋ฆฌ์ฆ
- Java
- ์๋ฐ
- node.js mysql ์ฐ๋
- ํฌ๋ก์ค์ฌ์ดํธ ์คํฌ๋ฆฝํธ
- Today
- Total
๋ชฉ๋ก์ ์ฒด ๊ธ (38)
<Hello Hosung๐/>
1. ํ๋ก์ ํธ ๋ชฉํ์ด๋ฒ ํฌ์คํ ์์๋ Expo + React Native๋ฅผ ์ด์ฉํด ์ฑ ํ๋ก์ ํธ๋ฅผ ์์ ํ ์ด๊ธฐํํ๊ณ ,ํ์ ์๋ ํ์ผ ์ ๊ฑฐ + ํด๋ ๊ตฌ์กฐ์ ์ฃผ์ ํ์ผ ์ญํ ์ ์ดํดํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค.์คํ๋์ ํ๋ฉด์ ์ ์ธํ๊ณ , ์ด๋ณด์๊ฐ ํด๋/ํ์ผ ์ญํ ์ ์ดํดํ ์ ์๋๋ก ์ ๋ฆฌํฉ๋๋ค. 1๏ธโฃ ํ๊ฒฝ ์ค๋น1-1. Node.js ์ค์น ํ์ธnode -vnpm -v ๊ถ์ฅ Node.js ๋ฒ์ : LTS (์: v20.x)๋ง์ฝ ์ค๋ฅ๊ฐ ๋๋ฉด nvm ์ฌ์ฉํ์ฌ ์ค์น:nvm install --ltsnvm use --lts 1-2. Expo CLI ์ค์น ํ์ธ์ต๊ทผ Expo๋ npx create-expo-app ์ฌ์ฉ์ ๊ถ์ฅํฉ๋๋ค.npx create-expo-app --version ๊ธฐ์กด์ expo-cli ์ค์น๋์ด ์์ด๋ ์ด์ npx ์ฌ..
1๏ธโฃ Pod์ฉ๋: ์ฟ ๋ฒ๋คํฐ์ค์์ ์ปจํ ์ด๋๋ฅผ ์คํํ๋ ๊ฐ์ฅ ์์ ๋จ์ํน์ง:๋จ์ผ ๋๋ ์ฌ๋ฌ ์ปจํ ์ด๋ ์คํ ๊ฐ๋ฅPod๋ง ์์ผ๋ฉด ์ธ๋ถ ์ ์์ ๋ถ๊ฐ์ฌ์์ฑ/๋กค๋ง ์ ๋ฐ์ดํธ๋ ์ง์ ์ ๋จ์ฌ์ฉ ๊ฒฝ์ฐ:๋จ์ผ Pod ์ง์ ์์ฑํ ์คํธ/ํ์ต์ฉ ์์ PodDeployment/StatefulSet ๋ด๋ถ template ๊ตฌ์กฐPod YAML ์์apiVersion: v1kind: Podmetadata: name: my-pod labels: app: my-appspec: containers: - name: my-container image: nginx ports: - containerPort: 80 2๏ธโฃ Deployment์ฉ๋: Pod๋ฅผ ๋ฐฐํฌํ๊ณ ๊ด๋ฆฌํ๋ ๊ฐ์ฒดํน์ง:์ง์ ํ Pod ๊ฐ์(replica)๋ฅผ ํญ์..
1๏ธโฃ ๋ค์ด๊ฐ๋ฉฐSpring Boot ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฟ ๋ฒ๋คํฐ์ค(K8s) ์์ ๋ฐฐํฌํ ๋ํ ํ๋ก์ ํธ ์์ ์ฌ๋ฌ API๋ฅผ ๋ง๋ค์ง, ์๋๋ฉด API๋ณ๋ก ๋ณ๋ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค์ด์ผ ํ ์ง ๊ณ ๋ฏผ๋๋ ์ํฉ์์ฒญ ๋ถ์ฐ, ์ค์ผ์ผ๋ง, ์ฅ์ ๊ฒฉ๋ฆฌ ์ธก๋ฉด์์ ๋น๊ต2๏ธโฃ ์ฟ ๋ฒ๋คํฐ์ค ๊ธฐ๋ณธ ๊ตฌ์กฐDeployment: ์ ํ๋ฆฌ์ผ์ด์ ๋จ์, ํ๋(Pod) ์์ฑ/๊ด๋ฆฌService: Deployment ๋ด๋ถ ํ๋์ ์์ฒญ์ ์ ๋ฌ, ๋ก๋๋ฐธ๋ฐ์ฑIngress + Nginx: ์ธ๋ถ ์์ฒญ์ Service๋ก ๋ผ์ฐํ ํ๊ณ , ์ฌ๋ฌ ํ๋์ ๋ถ์ฐ ์ฒ๋ฆฌ [์์ฒญํ๋ฆ๊ทธ๋ฆผ]์ธ๋ถ ์์ฒญ → Ingress(์ง๋) → Nginx(ํธ๋ํฝ ๋ฐฐ๋ถ) → Service → ์ฌ๋ฌ ํ๋ Ingress: URL/๋๋ฉ์ธ ๊ท์น ๊ด๋ฆฌNginx: ํ๋ ๋จ์ ๋ก๋๋ฐธ๋ฐ์ฑ3๏ธโฃ ํ ํ๋ก์ ํธ ์์ ์ฌ๋ฌ API (..
๐งฉ ๋ฌธ์ ์ํฉJenkins์์ GitHub ์ ์ฅ์๋ฅผ ์ฒดํฌ์์ํ๋ ์ฒซ ์คํ ์์ ์๋์ ๊ฐ์ ์๋ฌ ๋ฐ์The recommended git tool is: NONE → Git ์ค์น ๋ฌธ์ ๋ ์๋ (์ด๋ฏธ ํด๊ฒฐ)์๊ฒฉ ์ฆ๋ช ๋ ์ ์ ์ฐ๊ฒฐ๋จ (using credential)Git ์ ์ฅ์๋ public์ด๊ฑฐ๋ token ๋ฑ๋ก๋ ์ ์๊ทธ๋ฐ๋ฐ๋ ๊ณ์ clone ์คํจ.๐ ์์ธJenkins์ workspace ๋๋ ํ ๋ฆฌ์ ์ด์ ๋น๋ ์คํจ๋ก ์ธํ .git ๋๋ ํ ๋ฆฌ ์์์ด ๋จ์ ์์์.์ฆ:Jenkins๋ ์ด๋ฏธ clone ๋์ด ์๋ค๊ณ ์ฐฉ๊ฐํ๊ณ fetch, config ๋ฑ์ git ๋ช ๋ น์ ์คํํ์ง๋ง.git ํด๋๊ฐ ์์ผ๋ ์คํจํ ๊ฒโ ํด๊ฒฐ ๋ฐฉ๋ฒdocker exec -it -u root jenkins-container bashcd /var/j..
Docker Compose, Docker Swarm, Kubernetes ๋ชจ๋ ๋ค ์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ ๋๊ตฌ์ธ๋ฐ, ๊ทธ ์ฐจ์ด๋ ๋ฌด์์ผ๊น์? ์ปจํ ์ด๋ ๊ธฐ๋ฐ ๊ฐ๋ฐ ํ๊ฒฝ์ด ํ์ฐ๋๋ฉด์, Docker Compose, Docker Swarm, Kubernetes ๊ฐ์ ์ค์ผ์คํธ๋ ์ด์ ๋๊ตฌ๋ค์ด ๋งค์ฐ ์ค์ํ ์ญํ ์ ํ๊ณ ์์ต๋๋ค. ํ์ง๋ง ์ด ์ธ ๊ฐ์ง ๋๊ตฌ๋ ๋ชจ๋ ๋น์ทํด ๋ณด์ด์ง๋ง, ๊ฐ์์ ๋ชฉ์ , ๊ท๋ชจ, ๊ธฐ๋ฅ์์ ํฐ ์ฐจ์ด๊ฐ ์์ต๋๋ค. ์ด ๊ธ์์๋ ๊ฐ ๋๊ตฌ์ ํน์ง์ ๋น๊ตํ๊ณ , ์ธ์ ์ด๋ค ๋๊ตฌ๋ฅผ ์ฌ์ฉํด์ผ ํ ์ง์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.1. Docker Compose๋ชฉ์ : ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์์ ๋ค์ค ์ปจํ ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ด๋ฆฌํ ๋ ์ฌ์ฉ๋ฉ๋๋ค. ์ฃผ์ ํน์ง:- ๊ฐ๋จํ ์ค์ ์ผ๋ก ์ฌ๋ฌ ๊ฐ์ ์ปจํ ์ด๋๋ฅผ ํ๋์ ๋คํธ์ํฌ๋ก ๋ฌถ์ด ์คํํ ์ ์์ต..
Docker ๋คํธ์ํฌ๋ Docker ์ปจํ ์ด๋ ๊ฐ, ๋๋ ์ปจํ ์ด๋์ ์ธ๋ถ ์์คํ ๊ฐ์ ํต์ ์ ์ค์ ํ๊ณ ๊ด๋ฆฌํ๋ Docker์ ํต์ฌ ๊ธฐ๋ฅ ์ค ํ๋์ ๋๋ค. ์ด ๊ธฐ๋ฅ์ ํตํด ์ปจํ ์ด๋๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์์ผ๋ฉฐ, ํ์์ ๋ฐ๋ผ ๋คํธ์ํฌ๋ฅผ ๊ฒฉ๋ฆฌํ๊ฑฐ๋ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. ์๋๋ Docker ๋คํธ์ํฌ์ ๋ํด ์๊ธฐ ์ฝ๊ฒ ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค.Docker ๋คํธ์ํฌ๋?Docker๋ ์ปจํ ์ด๋๋ฅผ ๋ ๋ฆฝ์ ์ธ ํ๊ฒฝ์์ ์คํํฉ๋๋ค. ์ด๋ ๋คํธ์ํฌ๋ ์ปจํ ์ด๋ ๊ฐ์ ๋ฐ์ดํฐ ๊ตํ์ ๊ฐ๋ฅํ๊ฒ ํ๊ณ , ์ธ๋ถ์ ์ฐ๊ฒฐ๋๋ ํต๋ก ์ญํ ์ ํฉ๋๋ค.๋คํธ์ํฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์ปจํ ์ด๋ ๊ฐ์ ํต์ , ๋ณด์ ์ค์ , ๋ค๋ฅธ ์์คํ ๊ณผ์ ์ฐ๊ฒฐ์ ์์ฝ๊ฒ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.Docker ๋คํธ์ํฌ์ ์ฃผ์ ๊ธฐ๋ฅ์ปจํ ์ด๋ ๊ฐ ํต์ ๊ฐ์ ๋คํธ์ํฌ์ ์ฐ๊ฒฐ๋ ์ปจํ ์ด๋๋ผ๋ฆฌ๋ ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ..
1. ๋ฆฌ์กํธ ์ฑ๋ฅ ์ต์ ํ๊ฐ ์ค์ํ ์ด์ ๋ฆฌ์กํธ๋ก ๋ง๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ด ํฌ๊ณ ๋ณต์กํด์ง์๋ก ๋ ๋๋ง ์ฑ๋ฅ์ด ์ค์ํด์ง๋๋ค. ํ์ด์ง๊ฐ ๋๋ฆฌ๊ฒ ๋ก๋ฉ๋๊ฑฐ๋ ๋ถํ์ํ ์ปดํฌ๋ํธ๊ฐ ๊ณ์ ๋ฆฌ๋ ๋๋ง๋๋ ๊ฒฝ์ฐ, ์ฌ์ฉ์ ๊ฒฝํ(UX)์ด ํฌ๊ฒ ์ ํ๋ ์ ์์ต๋๋ค. ์ฑ๋ฅ ์ต์ ํ๋ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ ์๋๋ฅผ ๋์ฌ์ค๋๋ค.2. ๋ถํ์ํ ๋ ๋๋ง ๋ฐฉ์ง๋ฆฌ์กํธ๋ ์ํ(state)๋ ์์ฑ(props)์ด ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์ปดํฌ๋ํธ๋ฅผ ๋ฆฌ๋ ๋๋งํฉ๋๋ค. ํ์ง๋ง ๋ชจ๋ ๋ฆฌ๋ ๋๋ง์ด ํ์ํ ๊ฒ์ ์๋๋๋ค. ๋ถํ์ํ ๋ฆฌ๋ ๋๋ง์ ๋ฐฉ์งํ๋ ๋ช ๊ฐ์ง ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.React.memo: ํจ์ํ ์ปดํฌ๋ํธ์์ props๊ฐ ๋ณ๊ฒฝ๋์ง ์์ผ๋ฉด ๋ฆฌ๋ ๋๋ง์ ๋ง์ ์ ์์ต๋๋ค.const MyComponent = React.memo(({ data }) => {..
๋ฆฌ์กํธ ๋ผ์ฐํฐ๋ ๋ฆฌ์กํธ๋ก ๋ง๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ํ์ด์ง ๊ฐ ์ด๋์ ์ฝ๊ฒ ํด์ฃผ๋ ๋๊ตฌ์ ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ด์ง๋ฅผ ์ด๋ํ ๋๋ง๋ค ์๋ก๊ณ ์นจ์ด ๋๋๋ฐ, ๋ฆฌ์กํธ ๋ผ์ฐํฐ๋ฅผ ์ฌ์ฉํ๋ฉด ํ์ด์ง๊ฐ ์๋ก๊ณ ์นจ ์์ด๋ URL๋ง ๋ฐ๊พธ๋ฉด์ ๋ค์ํ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ค ์ ์์ต๋๋ค.์ด ๊ธ์์๋ ๋ฆฌ์กํธ ๋ผ์ฐํฐ๋ฅผ ์ฝ๊ฒ ์ค์นํ๊ณ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋จ๊ณ๋ณ๋ก ์๊ฐํ ๊ฒ์.1. ๋ฆฌ์กํธ ๋ผ์ฐํฐ ์ค์นํ๊ธฐ๋จผ์ ๋ฆฌ์กํธ ๋ผ์ฐํฐ๋ฅผ ํ๋ก์ ํธ์ ์ค์นํด์ผ ํด์. ์๋ ๋ช ๋ น์ด๋ก ์ค์นํ ์ ์์ต๋๋ค.npm install react-router-dom์ค์น๊ฐ ์๋ฃ๋๋ฉด, ๋ผ์ฐํฐ๋ฅผ ์ฌ์ฉํ ํ์ผ์์ ์๋์ ๊ฐ์ด ๋ถ๋ฌ์ต๋๋ค.import { BrowserRouter, Route, Switch } from 'react-router-dom';2. ๊ธฐ๋ณธ ๋ผ์ฐํ ์ฌ์ฉํ๊ธฐ..
Spring Security๋ Spring ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ธ์ฆ(authentication) ๋ฐ ๊ถํ(authorization) ์ฒ๋ฆฌ๋ฅผ ์ํ ๊ฐ๋ ฅํ ํ๋ ์์ํฌ์ ๋๋ค. ์ด ๋ธ๋ก๊ทธ์์๋ Spring Security๋ฅผ ์ค์ ํ๊ณ , ๊ธฐ๋ณธ์ ์ธ ์ธ์ฆ ๋ฐ ๊ถํ ๊ด๋ฆฌ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค.1. Spring Security ์๊ฐSpring Security๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ค์ํ ๋ณด์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ํ๋ ์์ํฌ์ ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค:์ธ์ฆ(Authentication): ์ฌ์ฉ์๊ฐ ๋๊ตฌ์ธ์ง ํ์ธํ๋ ๊ณผ์ .๊ถํ(Authorization): ์ฌ์ฉ์๊ฐ ํน์ ๋ฆฌ์์ค์ ์ ๊ทผํ ์ ์๋ ๊ถํ์ ํ์ธํ๋ ๊ณผ์ .2. Spring Security ์ค์ ํ๊ธฐ2.1. ์์กด์ฑ ์ถ๊ฐSpring Security๋ฅผ ํ๋ก์ ํธ..
๋ฆฌ์กํธ๋ 2013๋ ์ ์ฒ์ ๋ฑ์ฅํ ์ดํ๋ก ์ง์์ ์ผ๋ก ์งํํด์๊ณ , ๊ทธ ์ค ํ๋๊ฐ ๋ฐ๋ก ๋ฆฌ์กํธ ํ (React Hooks) ์ ๋๋ค. ํ ์ 2018๋ ์ ๋ฆฌ์กํธ 16.8 ๋ฒ์ ์์ ๋์ ๋์์ผ๋ฉฐ, ํจ์ํ ์ปดํฌ๋ํธ์์ ์ํ์ ๋ผ์ดํ์ฌ์ดํด ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๊ฒ ํด์ฃผ๋ ๊ธฐ๋ฅ์ ๋๋ค. ๊ทธ ์ด์ ๊น์ง๋ ํด๋์คํ ์ปดํฌ๋ํธ์์๋ง ์ํ ๊ด๋ฆฌ๋ ๋ผ์ดํ์ฌ์ดํด ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์์๋๋ฐ, ํ ์ ํตํด ํจ์ํ ์ปดํฌ๋ํธ์์๋ ์ด๋ฅผ ์ฒ๋ฆฌํ ์ ์๊ฒ ๋์์ต๋๋ค.ํ ์ด๋ ๋ฌด์์ธ๊ฐ?๋ฆฌ์กํธ ํ ์ ํจ์ํ ์ปดํฌ๋ํธ์์ ์ํ ๊ด๋ฆฌ, ๋ถ์ ํจ๊ณผ(side effect) ๊ด๋ฆฌ, ์ปจํ ์คํธ ์ฌ์ฉ ๋ฑ ์ฌ๋ฌ ๊ธฐ๋ฅ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ํจ์์ ๋๋ค. ํ ์ ์ฌ์ฉํ๋ฉด ์ปดํฌ๋ํธ๊ฐ ๋ ๊ฐ๊ฒฐํ๊ณ ์ฝ๊ธฐ ์ฝ๊ฒ ์์ฑ๋๋ฉฐ, ์ฌ์ฌ์ฉ์ฑ๋ ์ฆ๊ฐํฉ๋๋ค.ํ ์ ์ฃผ์ ํน์งํจ์ํ ์ปดํฌ๋ํธ์์๋ง ์ฌ์ฉํ ์ ์..
1. ๋ฆฌ์กํธ ์๊ฐ๋ฆฌ์กํธ๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ํ ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.์ปดํฌ๋ํธ ๊ธฐ๋ฐ์ผ๋ก UI๋ฅผ ๊ตฌ์ฑํ๋ฉฐ, ์ํ ๊ด๋ฆฌ์ ๋ฐ์ดํฐ ํ๋ฆ์ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค. 2. JSX (JavaScript XML)JSX๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋ ์์์ HTML๊ณผ ๋น์ทํ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ ์ ์๊ฒ ํด์ฃผ๋ ๋ฌธ๋ฒ์ ๋๋ค.const element = Hello, world!; * JSX๋ React.createElement๋ก ๋ณํ๋ฉ๋๋ค. 3. ์ปดํฌ๋ํธ (Component)๋ฆฌ์กํธ์์ UI๋ ์ปดํฌ๋ํธ๋ก ๋๋์ด ๊ด๋ฆฌ๋ฉ๋๋ค.์ปดํฌ๋ํธ๋ ํจ์ํ ์ปดํฌ๋ํธ์ ํด๋์คํ ์ปดํฌ๋ํธ๋ก ๋๋ฉ๋๋ค. ํจ์ํ ์ปดํฌ๋ํธfunction Welcome(props) { return Hello, {props.name};} ํด๋์คํ ์ปดํฌ๋ํธclass..
์ด๋ฒ ํฌ์คํ ์์๋ Docker๋ฅผ ์ฌ์ฉํด Jenkins ์๋ฒ๋ฅผ ๊ตฌ์ถํ๊ณ ,Jenkins ๋ด๋ถ์์ Docker ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ๋ค๋ฃน๋๋ค. CI/CD ํ์ดํ๋ผ์ธ ๊ตฌ์ถ์ ์ค๋นํ๋ ๋จ๊ณ๋ก ํ์ฉํ ์ ์์ต๋๋ค. 1. Jenkins ์ปจํ ์ด๋ ์คํJenkins๋ฅผ Docker ์ปจํ ์ด๋์์ ์คํํ๋ ค๋ฉด ๋จผ์ Jenkins ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์ค๊ณ , ์ปจํ ์ด๋๋ฅผ ๊ธฐ๋ํด์ผ ํฉ๋๋ค. 1.1 Docker ์ค์น ํ์ธ๋จผ์ , Docker๊ฐ ์ค์น๋์ด ์๋์ง ํ์ธํฉ๋๋ค. ์ค์น๋์ง ์์๋ค๋ฉด Docker ๊ณต์ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ฌ ์ค์นํ์ธ์.docker --version 1.3 Jenkins ์ปจํ ์ด๋ ์คํJenkins ์ปจํ ์ด๋๋ฅผ ์คํํ ๋ Docker ์์ผ ๊ณต์ ๋ฅผ ํตํด ์ปจํ ์ด๋ ๋ด๋ถ์์๋ Docker ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ..
๊ตฌ๊ธ ๋ก๊ทธ์ธ์ ๊ตฌํํ๊ธฐ ์ํด, OAuth 2.0 ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ Google API์ ์ฐ๋ํฉ๋๋ค. ์๋๋ Node.js + Express ๊ธฐ๋ฐ์ ๊ฐ๋จํ Google ๋ก๊ทธ์ธ ๊ตฌํ ์์ ์ ๋๋ค.์ฌ์ ์ค๋นGoogle Cloud Console์์ ํ๋ก์ ํธ ์์ฑGoogle Cloud Console์ ์ ์.์ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๊ฑฐ๋ ๊ธฐ์กด ํ๋ก์ ํธ๋ฅผ ์ ํ.OAuth ๋์ ํ๋ฉด ์ค์ :์ฌ์ฉ์ ์ ํ ์ ํ(์ธ๋ถ/๋ด๋ถ).ํ์ ์ ๋ณด ์ ๋ ฅ(์ ํ๋ฆฌ์ผ์ด์ ์ด๋ฆ, ์ด๋ฉ์ผ ๋ฑ).OAuth 2.0 ํด๋ผ์ด์ธํธ ID ์์ฑ:์ ํ๋ฆฌ์ผ์ด์ ์ ํ: ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ํ.์น์ธ๋ ๋ฆฌ๋๋ ์ URI ์ถ๊ฐ: ์) http://localhost:3000/auth/google/callbackํด๋ผ์ด์ธํธ ID์ ํด๋ผ์ด์ธํธ ๋น๋ฐ ํค(Client Secret)๋ฅผ ๋ณต์ฌ..
OAuth2 ๋ก๊ทธ์ธ์ OAuth 2.0 ์ธ์ฆ ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์๊ฐ ์ธ๋ถ ์๋น์ค(์: Google, Facebook, GitHub ๋ฑ)๋ฅผ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ก๊ทธ์ธํ ์ ์๋๋ก ํ๋ ๊ธฐ๋ฅ์ ๋๋ค. ์ด๋ฅผ ํตํด ์ฌ์ฉ์๋ ์ ๊ณ์ ์ ์์ฑํ์ง ์๊ณ ๋ ๊ธฐ์กด์ ์ธ๋ถ ๊ณ์ ์ ์ฌ์ฉํ์ฌ ์ฑ์ด๋ ์น์ฌ์ดํธ์ ์ ๊ทผํ ์ ์์ต๋๋ค. OAuth2 ๋ก๊ทธ์ธ์ ์ฃผ์ ๊ฐ๋ ๊ถํ ๋ถ์ฌ(Authorization)์ฌ์ฉ์๊ฐ ํน์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์์ ์ ์ ๋ณด๋ฅผ ์ ๊ทผํ๊ฑฐ๋ ์ฌ์ฉํ ์ ์๋๋ก ํ๊ฐํฉ๋๋ค.์ก์ธ์ค ํ ํฐ(Access Token)์ธ๋ถ ์๋น์ค๊ฐ ๋ฐ๊ธํ๋ ์์ ํค๋ก, ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฌ์ฉ์์ ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์๋ ๊ถํ์ ๋ํ๋ ๋๋ค.๋ฆฌ๋ค์ด๋ ์ (Redirection)์ฌ์ฉ์๋ OAuth ์ธ์ฆ ์๋ฒ๋ก ๋ฆฌ๋ค์ด๋ ํธ๋์ด ๋ก๊ทธ์ธ ์ ์ฐจ๋ฅผ ์ํํ๊ณ , ์๋ฃ ํ..
Spring AOP๋ ๋ฌด์์ธ๊ฐ์? Spring AOP(Aspect-Oriented Programming)๋ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํ๊ณ๋ฅผ ๋ณด์ํ๊ธฐ ์ํด ๋์ ๋ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ์ ๋๋ค. AOP๋ '๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ'์ผ๋ก, ํ๋ก๊ทธ๋จ์ ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง ์ธ์ ๊ณตํต์ ์ธ ๊ธฐ๋ฅ(์: ๋ก๊น , ํธ๋์ญ์ ๊ด๋ฆฌ ๋ฑ)์ ๋ ๋ฆฝ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๊ฒ ํด์ค๋๋ค. ์ด๋ฅผ ํตํด ์ฝ๋ ์ค๋ณต์ ์ค์ด๊ณ , ์ ์ง๋ณด์๋ฅผ ์ฉ์ดํ๊ฒ ํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก AOP๋ ํต์ฌ ๊ธฐ๋ฅ๊ณผ๋ ๋ณ๋๋ก "๊ด์ (Aspect)"์ด๋ผ๋ ๊ฐ๋ ์ ์ฌ์ฉํ์ฌ ๊ณตํต๋ ๊ด์ฌ์ฌ๋ฅผ ๋ชจ๋ํํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ก๊ทธ๋ฅผ ๋จ๊ธฐ๋ ๊ธฐ๋ฅ์ด๋ ํธ๋์ญ์ ๊ด๋ฆฌ๋ฅผ AOP๋ฅผ ํตํด ๋ณ๋๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. AOP์ ํต์ฌ ๊ฐ๋ Aspect (๊ด์ ): ํต์ฌ ๋ก์ง์ ๋ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ๋ชจ๋์ ๋๋ค. ์๋ฅผ..