| ์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
|---|---|---|---|---|---|---|
| 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 |
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- ํฌ๋ก์ค์ฌ์ดํธ ์คํฌ๋ฆฝํธ
- node.js mysql ์ฐ๋
- Jenkins
- db์ ๋ต
- Node.js
- ์๋ฐ
- Java
- java์ฑํ
- dockerhub
- SpringBoot
- ๋์์ธํจํด
- ์ฟ ๋ฒ๋คํฐ์ค
- ์ค๋ธ์
- CICD
- ๋ ผ๋ธ๋กํน
- injection๊ณต๊ฒฉ
- ์ฝํ
- docker
- React
- db์ํคํ ์ณ
- MySQL
- Personal Access Token
- spring scheduler
- ์๊ณ ๋ฆฌ์ฆ
- GoogleLogin
- ์ฝ๋ฉํ ์คํธ
- @scheduler
- oauth
- spring
- Today
- Total
๋ชฉ๋ก์ ์ฒด ๊ธ (38)
<Hello Hosung๐/>
1. JWT๋ ๋ฌด์์ธ๊ฐ?JWT๋ JSON Web Token์ ์ฝ์๋ก, ์ฌ์ฉ์์ ์ธ์ฆ ์ ๋ณด์ ๊ด๋ จ๋ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ์ ์กํ๊ธฐ ์ํ ์ธ์ฆ ํ ํฐ์ ๋๋ค. JWT๋ ์ธ ๊ฐ์ง ์ฃผ์ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค:ํค๋(Header): ํ ํฐ์ ํ์ ๊ณผ ์ฌ์ฉ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ช ์ํฉ๋๋ค.ํ์ด๋ก๋(Payload): ์ธ์ฆ์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ด๊ณ ์์ผ๋ฉฐ, ์ด ๋ฐ์ดํฐ๋ ํ ํฐ์ ๋ฐ๊ธํ ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ์ฃผ๊ณ ๋ฐ์ ์ ์์ต๋๋ค.์๋ช (Signature): ํ ํฐ์ ๋ฌด๊ฒฐ์ฑ์ ๊ฒ์ฆํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์ํธํ๋ ๋ถ๋ถ์ ๋๋ค.JWT๋ ์ธ ๋ถ๋ถ์ด .(์ )์ผ๋ก ๊ตฌ๋ถ๋์ด ์์ต๋๋ค: header.payload.signature.2. JWT์ ์๋ ์๋ฆฌJWT์ ์๋ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:๋ก๊ทธ์ธ: ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ ์, ์๋ฒ๋ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ํ์ธํ ํ JWT๋ฅผ ์์ฑํฉ..
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํต์ฌ์ ๋๋ค. ๋ฐ์ดํฐ๊ฐ ๋์ด๋๊ณ ์ฌ์ฉ์ ์์ฒญ์ด ๋ณต์กํด์ง์๋ก, ํจ์จ์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ์ ์ํคํ ์ฒ๋ ํ์์ ์ ๋๋ค. ์ด๋ฒ ๊ธ์์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ ์ ๊ณ ๋ คํ ์ ์๋ ๋ค์ํ ์ํคํ ์ฒ๋ฅผ ์์ธํ ์ค๋ช ํ๊ณ , ๊ฐ ์ํคํ ์ฒ๊ฐ ์ ํฉํ ๊ฒฝ์ฐ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ดํด๋ฅผ ๋๊ธฐ ์ํด ๊ทธ๋ฆผ๊ณผ ํจ๊ป ์ค๋ช ํ๋ ๋๊น์ง ์ฝ์ด๋ณด์ธ์! ๐1. ๋จ์ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ํคํ ์ฒ (Single Database Architecture)๊ฐ์๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์ํคํ ์ฒ๋ก, ๋ชจ๋ ๋ฐ์ดํฐ ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ ์์ ์ด ํ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฒ๋ฆฌ๋ฉ๋๋ค. ์๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ฉฐ, ๋จ์ํ ๊ตฌ์กฐ ๋๋ถ์ ๋น ๋ฅด๊ฒ ๊ตฌ์ถํ ์ ์์ต๋๋ค.ํน์ง์ฅ์ :๊ตฌํ๊ณผ ๊ด๋ฆฌ๊ฐ ๊ฐ๋จํ์ฌ ๊ฐ๋ฐ ์ด๊ธฐ ๋จ๊ณ์ ์ ํฉ.๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๋ฉฐ, ๋ณต์กํ ๋..
๋์์ธ ํจํด์ด๋ ?๋์์ธ ํจํด์ ์ํํธ์จ์ด ๊ฐ๋ฐ์์ ์์ฃผ ๋ฐ์ํ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์๋ฃจ์ ์ ๋๋ค. ๋์์ธ ํจํด์ ํน์ ํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ด๋ฏธ ๊ฒ์ฆ๋ ๋ฐฉ๋ฒ์ ์ ์ํ๋ฉฐ, ์ด๋ฅผ ํตํด ์ฝ๋์ ํจ์จ์ฑ๊ณผ ์ ์ง ๋ณด์์ฑ์ ๋์ผ ์ ์์ต๋๋ค. ๋์์ธ ํจํด์ ๋ถ๋ฅ๋์์ธ ํจํด์ ์ผ๋ฐ์ ์ผ๋ก ์ธ ๊ฐ์ง ์ฃผ์ ๋ฒ์ฃผ๋ก ๋๋ ์ง๋๋ค: ์์ฑ ํจํด (Creational Patterns): ๊ฐ์ฒด ์์ฑ๊ณผ ๊ด๋ จ๋ ํจํด ๊ตฌ์กฐ์ ํจํด (Structural Patterns): ํด๋์ค์ ๊ฐ์ฒด์ ๊ด๊ณ๋ฅผ ์กฐ์งํ๋ ํจํด ํ๋ ํจํด (Behavioral Patterns): ๊ฐ์ฒด ๊ฐ์ ์ํธ์์ฉ๊ณผ ์ฑ ์์ ์ ์ํ๋ ํจํด ์์ฃผ ์ฌ์ฉ๋๋ ์๋ฐ ๋์์ธ ํจํด(1) ์ฑ๊ธํค ํจํด (Singleton Pattern) ๋ชฉ์ : ํด๋์ค์ ์ธ์คํด์ค๊ฐ ํ๋๋ง ์กด..
์ฑ๊ธํค(Singleton) ํจํด์ ๊ฐ์ฒด์ ์ธ์คํด์ค๊ฐ ์ค์ง ํ๋๋ง ์กด์ฌํ๋๋ก ๋ณด์ฅํ๋ ๋์์ธ ํจํด์ ๋๋ค. ์ฃผ๋ก ํ๋์ ์ธ์คํด์ค๋ง ํ์ํ๊ฑฐ๋, ๋ชจ๋ ์ฌ์ฉ์๊ฐ ๊ณต์ ํด์ผ ํ๋ ๊ฐ์ฒด๋ฅผ ๋ง๋ค ๋ ์ฌ์ฉ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ์ด๋ ๋ก๊ทธ ์ฒ๋ฆฌ๊ธฐ์ ๊ฐ์ ๊ฒฝ์ฐ์ ์ ํฉํฉ๋๋ค. 1. ์ฑ๊ธํค ํจํด์ ํต์ฌ ํน์ง์ค์ง ํ๋์ ์ธ์คํด์ค๋ง ์์ฑ๋๋ฉฐ, ๋ชจ๋ ํด๋ผ์ด์ธํธ๊ฐ ์ด๋ฅผ ๊ณต์ ํฉ๋๋ค.๊ธ๋ก๋ฒ ์ ๊ทผ์ ์ ๊ณตํ์ฌ ํ๋ก๊ทธ๋จ ์ด๋์๋ ํด๋น ์ธ์คํด์ค์ ์ ๊ทผํ ์ ์์ต๋๋ค.์ธ์คํด์ค๋ฅผ ์ ์ญ์ผ๋ก ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๋ฅผ ์ค์ด๊ณ ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค. 2. ์ฑ๊ธํค ํจํด ๊ตฌํ ์์ (Java)๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์ฑ๊ธํค ํจํด์ Java๋ก ๊ตฌํํด๋ณด๊ฒ ์ต๋๋ค. ์์ ์ฝ๋: ๊ธฐ๋ณธ ์ฑ๊ธํค ๊ตฌํpublic class Singleton { // ์ ์ ๋ณ์๋ก ์ฑ..
Java์์ **์ง๋ ฌํ(Serialization)**๋ ๊ฐ์ฒด๋ฅผ ๋ฐ์ดํธ ์คํธ๋ฆผ์ผ๋ก ๋ณํํ์ฌ ํ์ผ์ ์ ์ฅํ๊ฑฐ๋ ๋คํธ์ํฌ๋ฅผ ํตํด ์ ์กํ ์ ์๋๋ก ๋ง๋๋ ๊ณผ์ ์ ๋๋ค. ๋ฐ๋๋ก, ๋ฐ์ดํธ ์คํธ๋ฆผ์ ๋ค์ ๊ฐ์ฒด๋ก ๋ณํํ๋ ๊ณผ์ ์ **์ญ์ง๋ ฌํ(Deserialization)**๋ผ๊ณ ํฉ๋๋ค. ์ง๋ ฌํ๋ ์ฃผ๋ก ๋ฐ์ดํฐ๋ฅผ ์์ํํ๊ฑฐ๋ ์๊ฒฉ ํต์ ์์ ๊ฐ์ฒด๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋ ์ฌ์ฉ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ๊ฐ์ฒด ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๋ ์ง๋ ฌํ๊ฐ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋ฉ๋๋ค. ์ด ๋ธ๋ก๊ทธ์์๋ Java์์ ์ง๋ ฌํ๊ฐ ๋ฌด์์ธ์ง, ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง, ๊ทธ๋ฆฌ๊ณ ์์ ์ฝ๋๋ก ์ฝ๊ฒ ์ค๋ช ํด ๋ณด๊ฒ ์ต๋๋ค. 1. ์ง๋ ฌํ์ ๊ธฐ๋ณธ ๊ฐ๋ ์ง๋ ฌํ๋ ๊ฐ์ฒด์ ์ํ๋ฅผ ๋ฐ์ดํธ ์คํธ๋ฆผ์ผ๋ก ๋ณํํ์ฌ ์ ์ฅํ๊ฑฐ๋ ์ ์กํ ์ ์๋๋ก ํด์ฃผ๋ ๊ณผ์ ์ ๋๋ค. ์ง๋ ฌํ๋ ๊ฐ..
์๋ฐ๋ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP) ์ธ์ด์ ๋๋ค. ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํต์ฌ ๊ฐ๋ ์ค ํ๋๋ "์์"์ ๋๋ค. ์์์ ํ์ฉํ๋ฉด ๊ธฐ์กด์ ํด๋์ค๋ฅผ ๋ฐํ์ผ๋ก ์๋ก์ด ํด๋์ค๋ฅผ ๋ง๋ค ์ ์๋๋ฐ, ์ด๋ฅผ ํตํด ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ๋์ผ ์ ์์ต๋๋ค. ์ด๋ฒ ๋ธ๋ก๊ทธ์์๋ ์๋ฐ ์์์ ๊ธฐ๋ณธ ๊ฐ๋ ๊ณผ ์ค์ ์์ ๋ฅผ ํตํด ์ด๋ฅผ ์ฝ๊ฒ ์ดํดํ ์ ์๋๋ก ์ค๋ช ๋๋ฆด๊ฒ์๐ 1. ์์์ด๋ ๋ฌด์์ธ๊ฐ? **์์(Inheritance)**์ ํ๋์ ํด๋์ค๊ฐ ๋ค๋ฅธ ํด๋์ค์ ์์ฑ๊ณผ ๋ฉ์๋๋ฅผ ๋ฌผ๋ ค๋ฐ๋ ๊ธฐ๋ฅ์ ๋๋ค. ๋ถ๋ชจ ํด๋์ค(์์ ํด๋์ค)์ ์์ฑ๊ณผ ๋ฉ์๋๋ฅผ ์์ ํด๋์ค(ํ์ ํด๋์ค)์์ ์ฌ์ฌ์ฉํ ์ ์๊ฒ ๋๋ฏ๋ก, ์ฝ๋์ ์ค๋ณต์ ์ค์ด๊ณ ํจ์จ์ ์ธ ํ๋ก๊ทธ๋จ์ ์์ฑํ ์ ์์ต๋๋ค. ์์์ ๊ธฐ๋ณธ ๊ตฌ๋ฌธclass ๋ถ๋ชจํด๋์ค { // ๋ถ๋ชจ ํด๋์ค์ ์์ฑ..
์๋ฐ ์ธํฐํ์ด์ค๋ ํด๋์ค๊ฐ ๋ฐ๋์ ๊ตฌํํด์ผ ํ๋ ๋ฉ์๋๋ฅผ ์ ์ธํ๋ ์ถ์์ ์ธ ํ์ ์ ๋๋ค. ์ธํฐํ์ด์ค๋ ๋ฉ์๋์ ์ ์ธ๋ง ํฌํจํ๊ณ , ๋ฉ์๋ ๋ณธ์ฒด(๊ตฌํ)๋ ํฌํจํ์ง ์์ต๋๋ค. ํด๋์ค๋ฅผ ๋ง๋ค ๋ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํ(implement)ํ๋ฉด, ์ธํฐํ์ด์ค์ ์ ์๋ ๋ชจ๋ ๋ฉ์๋๋ฅผ ๋ฐ๋์ ๊ตฌํํด์ผ ํฉ๋๋ค. ์ธํฐํ์ด์ค์ ์ฃผ๋ ๋ชฉ์ ์ ๋คํ์ฑ์ ์ ๊ณตํ๊ณ , ๋์จํ ๊ฒฐํฉ์ ์ ๋ํ๋ ๊ฒ์ ๋๋ค. ์ฆ, ์๋ก ๋ค๋ฅธ ํด๋์ค๋ค์ด ๋์ผํ ๋ฉ์๋๋ฅผ ํตํด ๋์ํ ์ ์๋๋ก ํ์ฌ ์ฝ๋์ ์ ์ฐ์ฑ๊ณผ ํ์ฅ์ฑ์ ๋์ด๋ ์ญํ ์ ํฉ๋๋ค. ์ธํฐํ์ด์ค์ ๊ธฐ๋ณธ ๋ฌธ๋ฒ ์ธํฐํ์ด์ค๋ interface ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, Animal์ด๋ผ๋ ์ธํฐํ์ด์ค๋ฅผ ์ ์ํ๊ณ , sound()๋ผ๋ ๋ฉ์๋๋ฅผ ์ ์ธํ ์ ์์ต๋๋ค.interface Animal { void..
Java์์ ํ์ผ ์ ์ถ๋ ฅ์ ๋ฐ์ดํฐ๋ฅผ ์ธ๋ถ ํ์ผ์ ์ ์ฅํ๊ฑฐ๋ ์ฝ์ด๋ค์ด๊ธฐ ์ํด ํ์์ ์ธ ๊ธฐ๋ฅ์ ๋๋ค. ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ ์์์ฑ์ ๊ตฌํํ ์ ์์ด ์ฌ๋ฌ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค. ์ด๋ฒ ํฌ์คํธ์์๋ ํ์ผ ์ ์ถ๋ ฅ์ ๊ธฐ๋ณธ ๊ฐ๋ ๊ณผ ์์ฃผ ์ฐ์ด๋ ํด๋์ค๋ค, ๊ทธ๋ฆฌ๊ณ ์ฝ๋ ์์ ๋ฅผ ํตํด ํ์ผ ์ ์ถ๋ ฅ์ ๊ฐ๋จํ ์์๋ณด๊ฒ ์ต๋๋ค. 1. ํ์ผ ์ ์ถ๋ ฅ ๊ธฐ๋ณธ ๊ฐ๋ Java์ ์ ์ถ๋ ฅ์ ์คํธ๋ฆผ(Stream) ๊ฐ๋ ์ ํตํด ์ด๋ฃจ์ด์ง๋๋ค. ์คํธ๋ฆผ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํธ ๋จ์๋ก ์ ์กํ๋ ํ๋ฆ์ผ๋ก, Java๋ ์ด๋ฅผ ํตํด ํ์ผ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฑฐ๋ ์ฐ๋ ์์ ์ ์ํํฉ๋๋ค. ์ ์ถ๋ ฅ์๋ ํฌ๊ฒ ๋ ๊ฐ์ง ์ ํ์ด ์์ต๋๋ค๋ฐ์ดํธ ์คํธ๋ฆผ: InputStream, OutputStream์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉฐ, ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํธ(byte) ๋จ์๋ก ์ฝ๊ณ ์๋๋ค. ์ฃผ๋ก ์ด๋ฏธ์ง, ..
Spring Boot๋ ์์กด์ฑ ์ฃผ์ (Dependency Injection, DI)์ ํตํด ๊ฐ์ฒด ๊ฐ์ ๊ด๊ณ๋ฅผ ๊ด๋ฆฌํ๊ณ , ๊ฐ์ฒด์ ์์ฑ๊ณผ ๊ด๊ณ ์ค์ ์ Spring ์ปจํ ์ด๋๊ฐ ๋ด๋นํ๊ฒ ๋ง๋ค์ด ์ฃผ๋ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ฝ๋์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๊ณ , ๊ฐ์ฒด๋ค์ ์ฌ์ฌ์ฉ์ฑ๊ณผ ํ ์คํธ ์ฉ์ด์ฑ์ ๋์ผ ์ ์์ต๋๋ค. ์ด๋ฒ ๋ธ๋ก๊ทธ์์๋ Spring Boot์์ ์์กด์ฑ ์ฃผ์ ์ ๊ฐ๋ ๊ณผ ์ค์ ์์๋ฅผ ํตํด ์ด๋ฅผ ์ด๋ป๊ฒ ํ์ฉํ ์ ์๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค. 1. ์์กด์ฑ ์ฃผ์ (Dependency Injection)๋? **์์กด์ฑ ์ฃผ์ (DI)**์ ๊ฐ์ฒด๊ฐ ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ง์ ์์ฑํ์ง ์๊ณ , ์ธ๋ถ์์ ์์กด ๊ฐ์ฒด๋ฅผ ์ฃผ์ ๋ฐ๋๋ก ํ๋ ์ค๊ณ ํจํด์ ๋๋ค. ๊ฐ์ฒด๊ฐ ์์ ์ ์์กด์ฑ์ ์ง์ ๊ด๋ฆฌํ๋ ๋์ , Spring๊ณผ ๊ฐ์ IoC(Inversion ..
์์ผ(Socket)์ ๋คํธ์ํฌ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ ์๊ฒ ํด์ฃผ๋ ์๋ฐฉํฅ ํต์ ์ฑ๋์ ๋๋ค. ์๋ฐ์์๋ java.net ํจํค์ง๋ฅผ ํตํด ์์ผ ํ๋ก๊ทธ๋๋ฐ์ ์ง์ํฉ๋๋ค. ์ด ๊ธ์์๋ ์๋ฐ ์์ผ ํต์ ์ ์ด์ฉํ์ฌ ๊ฐ๋จํ ์ฑํ ํ๋ก๊ทธ๋จ์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์์๋ณด๊ฒ ์ต๋๋ค.1. ์์ผ ํต์ ์ ๊ธฐ๋ณธ ์ดํด์์ผ ํต์ ์ ํฌ๊ฒ ๋ ๊ฐ์ง๋ก ๋๋ ์ ์์ต๋๋ค:์๋ฒ(Server): ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ณ ํด๋ผ์ด์ธํธ์ ์ฐ๊ฒฐ์ ๊ด๋ฆฌํ๋ ์ญํ ํด๋ผ์ด์ธํธ(Client): ์๋ฒ์ ์ ์ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ์ญํ ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋๊ธฐํ๋ฉฐ ์ฐ๊ฒฐ์ ์๋ฝํ๊ณ , ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ ์ฐ๊ฒฐ ์์ฒญ์ ๋ณด๋ ๋๋ค. ๋ฐ์ดํฐ๋ InputStream๊ณผ OutputStream์ ํตํด ์ฃผ๊ณ ๋ฐ์ต๋๋ค.2. ์ฑํ ์๋ฒ ๊ตฌํ์ฑํ ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์ฐ๊ฒฐ์ ๋ฐ๊ณ , ๋ฉ์์ง๋ฅผ ํด๋ผ์ด..
ํ์๊ฐ์ ์ ์ฌ์ฉ์๋ก๋ถํฐ ์์งํ ์์ด๋์ ๋น๋ฐ๋ฒํธ ๊ฐ์ ์ ๋ณด๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๊ฒ ๋ฉ๋๋ค. ํ์ง๋ง ์ด๋ ์ฃผ์ํ ์ ์ ๋น๋ฐ๋ฒํธ์ ๊ฐ์ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ์ํธํํ์ง ์๊ณ ํ๋ฌธ ๊ทธ๋๋ก ์ ์ฅํ ๊ฒฝ์ฐ์ ๋๋ค. ๋ง์ฝ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ ์ถ๋๋ฉด, ์ ์์ ์ธ ์ฌ์ฉ์๊ฐ ํ๋ฌธ ๋น๋ฐ๋ฒํธ๋ฅผ ํตํด ์์ฝ๊ฒ ๋ก๊ทธ์ธํ๊ฑฐ๋ ๋ค์ํ ๊ณต๊ฒฉ์ ์๋ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ฐ๋ผ์ ๋ณด์์ ๊ฐํํ๊ธฐ ์ํด ๋น๋ฐ๋ฒํธ๋ ์ํธํ(ํด์ฑ) ๊ณผ์ ์ ๊ฑฐ์ณ ์ ์ฅํด์ผ ํฉ๋๋ค. ํด์ฑ์ ํตํด ๋น๋ฐ๋ฒํธ๋ฅผ ์ํธํํ๋ฉด, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ถ ์์๋ ๋น๋ฐ๋ฒํธ ์๋ฌธ์ด ์๋ ํด์๊ฐ์ด ๋ ธ์ถ๋๋ฏ๋ก ๋ณด์์ ์ ์งํ ์ ์์ต๋๋ค. ์ค๋ ํฌ์คํ ์ bcrypt ๋ผ์ด๋ธ๋ฌ๋ฅผ ํ์ฉํ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ์ํธํํ์ฌ, ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๋๋ก ํฉ์๋ค. 1) Node.js ํ๋ก์ ํธ์ bcrypt๋ผ๋ ๋ผ์ด๋ธ๋ฌ..
์ค๋์ Express ์๋ฒ๋ฅผ ๋ง๋ค์ด ๋ด ์๋ค ๐๋ง๋ค๊ธฐ์ ์์ Express๊ฐ ๋ฌด์์ธ๊ณ ์์๋ณด๋ฉด ๊ณต์ ๋ฌธ์๋ฅผ ๋ณด๋ฉด ์๋์ ๊ฐ์ด ๋์ ์์ด์ ์ค์ํ ๋ถ๋ถ์ ๋ฐ๋ก ์น ์ ํ๋ฆฌ์ผ์ด์ ํ๋ ์์ํฌ ์์, ์ฝ๊ฒ ๋งํด Java ๊ณ์ด์๋ Spring, SpringBoot ๋ฑ์ด ์กด์ฌํ๋ฏ Node.js๋ฅผ ํตํด ์น ์ ์ฝ๊ฒ ๋ง๋๋ ํ๋ ์์ํฌ๊ฐ ๋ฐ๋ก Express ์ ๋๋ค. ์๋์ ๊ฐ์ด ๊ฐ๋จํ Express ์๋ฒ๋ฅผ ๋ง๋ค์ด ๋ณด๋๋ก ํฉ์๋ค. 1. ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ ์์ฑ ๋ฐ ์ด๊ธฐํ๋จผ์ Express ์๋ฒ๋ฅผ ์คํํ ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ง๋ค๊ณ , ๊ทธ ์์์ Node.js ํ๋ก์ ํธ๋ฅผ ์ด๊ธฐํํฉ๋๋ค.mkdir express-servercd express-servernpm init -y # package.json ํ์ผ ์๋ ์์ฑ 2. E..
์ด๋ฒ์ Node.js ์ MySQL ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋๊ณผ ๋ํ mybatis-mapper ๋ฅผ ํ์ฉ ํ๋ ๋ฐฉ๋ฒ ๋ํ ์์ ๋ณด๋๋ก ํด์๐ ๋จผ์ ์๋์ ๊ฐ์ด ๋์ปค ํ๊ฒฝ์ MySQL ์ปจํ ์ด๋๊ฐ ์ฌ๋ผ ๊ฐ๋ค๊ณ ๊ฐ์ ํด๋ด ์๋ค! (๋์ปค๋ฅผ ํตํด MySQL DB ๊ตฌ์ถํ๋ ๋ฐฉ๋ฒ์ ์๋์์ ํ์ธ ๊ฐ๋ฅํด์) ↓ ↓ ↓ 2024.08.18 - [๐ณ Docker] - [Docker] ๋์ปค๋ก MySQL DB๐ฆ ์๋ฒ ๋ง๋ค์ด๋ณด๊ธฐ ๊ทธ๋ฆฌ๊ณ ์๋์ ๊ฐ์ด Node.js๋ก ์์ฑํ Express ์๋ฒ๊ฐ ์๋ค๊ณ ๊ฐ์ ํด๋ณผ๊ฒ์. Express๋ Node.js๋ฅผ ์ํ ๋น ๋ฅด๊ณ ๊ฐ๋จํ ์น ์ ํ๋ฆฌ์ผ์ด์ ํ๋ ์์ํฌ์์. ๐ง ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฝ๊ฒ ๋ง๋ค ์ ์๋๋ก ๋์์ฃผ๋ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ฉฐ, ํนํ REST API๋ ์น ์๋ฒ๋ฅผ ๊ตฌ์ถํ ๋ ๋ง์ด ์ฌ์ฉํฉ๋๋ค. ..
Docker ๋ฅผ ํตํด ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค๊ณ , ์ปจํ ์ด๋ ์คํํ๊ณ , ์ด๋ฐ๋ถ๋ถ์ ๊ณ์ํด์ ํ๋๊ฒ์ ๋๋ฌด ๋นํจ์จ์ ์ด์์๐ฅฒ ๊ทธ๋ฌ๋ค๋ณด๋ ์ข๋ ํธํ๊ฒ ํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์๊น ์๊ฐํ์ด์ ์๋์ ๊ฐ์ด ์ค๊ฐ์ Jenkins๋ฅผ ์ฌ์ฉํด์ ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค๊ณ , ์ปจํ ์ด๋๋ฅผ ์๋์ผ๋ก ์คํ์์ผ์ฃผ๋ฉด ์ด๋จ๊ฐ ํ๊ณ ์! ๊ทธ๋ฆผ์ ์ข ์ฝ๊ฒ ์ค๋ช ํ๋ฉด ์๋์ ๊ฐ์์.1. ๊ฐ๋ฐ์๊ฐ ๊ฐ๋ฐํ ์์ค๋ฅผ ๋ ํฌ์งํ ๋ฆฌ์ GitHub์ ์ปค๋ฐ & push ํ๋ค. 2. Docker ์ปจํ ์ด๋๋ก ๊ตฌ๋์ค์ธ Jenkins ์์ ํ์ดํ๋ผ์ธ์ ํตํ์ฌ GitHub์ ์๋ ์์ค๋ฅผ ์ฒดํฌ์์ ํ๋ค 3. Jenkins ํ์ดํ๋ผ์ธ์ ํตํด ๋์ปค ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค๊ณ ์ปจํ ์ด๋๋ฅผ ์คํ์ํจ๋ค. 1. ๋์ปค๋ก Jenkins Server ๋ง๋ค๊ธฐ ใDockerHub๋ฅผ ํตํด ์ ํจ์ค ์ ์ด๋ฏธ์ง๋ฅผ ๋ฐ์์ค๊ฒ์.docke..
์ค๋์ ๋์ปค๋ฅผ ํตํด ํด ๋ก์ปฌํ๊ฒฝ์ MySQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ๋ฅผ ๋ง๋ค์ด ๋ณด๋๋ก ํด์๐ง๐ป๐ป๋จผ์ ๋์ปค๋ ์๋์ ๊ฐ์ด ์ค์น๊ฐ ๋์ด์๋ค ๊ฐ์ ํ๊ณ ์งํํ๋ณผ๊ฒ์. ~ % : docker -v~ % : Docker version 26.1.1, build ๋จผ์ ๋์ปคํ๋ธ์์ ์๋์ ๊ฐ์ ๋ช ๋ น์ด๋ก MySQL์ pull ๋ฐ์๊ฒ์. ๋ฒ์ ์ ๋ช ์๋ฅผ ํ์ง ์์ผ๋ฉด ์ต์ ๋ฒ์ ์ผ๋ก ๋ฉ๋๋ค๐(pull ๋ช ๋ น์ด๋ docker hub์ ์๋ ์ด๋ฏธ์ง๋ฅผ ๊ฐ๊ณ ์ค๋ ๋ช ๋ น์ด ์์.)~ % : docker pull mysql~ % : latest~ % : Pulling from library/mysqlc72f53f7235b: Pull complete c7e4ed755af2: Pull complete 6c8c802f90bc: Pull com..