์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- ์๋ฒ ํฐ์ง๋ ๋์ปค ์ฌ์คํ
- ์ ํจ์ค ๋น๋ ์ค๋ฅ
- ์๋ฐ
- ํ๋ก๊ทธ๋๋จธ์ค ํฉ์นํ์์๊ธ
- docker compose
- ์ ํจ์ค ์ค์ผ์ค๋ฌ
- aws saa ํฉ๊ฒฉ
- nGrinder
- s3 log ์ ์ฅ
- prod docker-compose
- ํ์ดํผ๋ฐ์ด์
- private subnet ec2 ๋ก์ปฌ ์ ์
- JPA
- redis ํ ์คํธ์ฝ๋
- s3 ์ด๋ฏธ์ง ์ ์ฅ
- docker
- ์คํํ๋ ๋ฏธ์ค
- s3 ์ด๋ฏธ์ง ๋ค์ด๋ก๋
- jvm ๋ฐ๋ฐ๋ฅ๊น์ง ํํค์น๊ธฐ
- docker-compose kafka
- aws ์ฟ ํฐ
- ํ๋ก๊ทธ๋๋จธ์ค
- redis ์กฐํ
- docker ps -a
- Entity
- ํ๋ก๊ทธ๋๋จธ์ค ์ปฌ๋ฌ๋ง๋ถ
- AWS Certified Solutions Architect - Associate
- ๋ค์ค ์ปจํ ์ด๋
- Kafka
- Codedeploy ์ค๋ฅ
- Today
- Total
๋ชฉ๋ก์ ์ฒด ๊ธ (106)
๐๐ข๐๐ โ๐๐๐ ๐๐๐ก๐๐ ๐๐๐๐โง
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cDYe49/btsn12usF2i/NTzrID95qIMnEi6uboixL1/img.png)
QueryDSL ์ ์ ํ์ ์ ์ด์ฉํด SQL๊ณผ ๊ฐ์ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ ์ ์๋๋ก ์ง์ํ๋ ํ๋ ์์ํฌ ์ฟผ๋ฆฌ๋ฅผ ๋ฌธ์๊ฐ ์๋ ์ฝ๋๋ก ์์ฑํด๋, ์ฝ๊ณ ๊ฐ๊ฒฐํ๋ฉฐ ๊ทธ ๋ชจ์๋ ์ฟผ๋ฆฌ์ ๋น์ทํ๊ฒ ๊ฐ๋ฐํ ์ ์๋ ์คํ์์ค ํ๋ก์ ํธ QueryDSL์ ์ฅ์ IDE๊ฐ ์ ๊ณตํ๋ ์ฝ๋ ์๋ ์์ฑ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋ค. ๋ฌธ๋ฒ์ ์ผ๋ก ์๋ชป๋ ์ฟผ๋ฆฌ๋ฅผ ํ์ฉํ์ง ์๋๋ค. ๋ฐ๋ผ์ ์ ์์ ์ผ๋ก ํ์ฉ๋ QueryDSL์ ๋ฌธ๋ฒ ์ค๋ฅ๋ฅผ ๋ฐ์์ํค์ง ์๋๋ค. ๊ณ ์ ๋ SQL ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ์ง ์๊ธฐ ๋๋ฌธ์ ๋์ ์ผ๋ก ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ ์ ์๋ค. ์ฝ๋๋ก ์์ฑํ๋ฏ๋ก ๊ฐ๋ ์ฑ ๋ฐ ์์ฐ์ฑ์ด ํฅ์๋๋ค. ๋๋ฉ์ธ ํ์ ๊ณผ ํ๋กํผํฐ๋ฅผ ์์ ํ๊ฒ ์ฐธ์กฐํ ์ ์๋ค. QueryDSL ์ค์ buildscript { ext { queryDslVersion = "5.0.0" } } plugins { i..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/90e9c/btslXnBs9Oe/Tgjq0CjxPiUmUTzjRdiC4K/img.png)
์์ธ(Exception) ํ๋ก๊ทธ๋๋ฐ์์ ์์ธ(Exception)๋ ์ ๋ ฅ๊ฐ์ ์ฒ๋ฆฌ๊ฐ ๋ถ๊ฐ๋ฅํ๊ฑฐ๋ ์ฐธ์กฐ๋ ๊ฐ์ด ์๋ชป๋ ๊ฒฝ์ฐ ๋ฑ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ ์์ ์ผ๋ก ๋์ํ์ง ๋ชปํ๋ ์ํฉ ์ฝ๋ ์ค๊ณ๋ฅผ ํตํด ๊ฐ๋ฐ์๊ฐ ์ง์ ์ฒ๋ฆฌ ๊ฐ๋ฅํ๋ค. ์๋ฌ(Error) ์ฃผ๋ก ์๋ฐ์ ๊ฐ์๋จธ์ ์์ ๋ฐ์์ํค๋ ๊ฒ์ด๋ฏ๋ก ์์ธ์ ๋ฌ๋ฆฌ ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋์์ ์ฒ๋ฆฌํ ์ ์๋ ๊ฒ์ด ๊ฑฐ์ ์๋ค. ex) ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ(OutOfMemory), ์คํ ์ค๋ฒํ๋ก(StackOverFlow) ๋ฐ์ ์์ ์ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ์๋๋ผ ๋ฏธ๋ฆฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฝ๋๋ฅผ ์ดํด๋ณด๋ฉด์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์๋๋ก ์๋ฐฉํด์ ์ฐจ๋จํด์ผํ๋ค. ์์ธ ํด๋์ค ๋ชจ๋ ์์ธ ํด๋์ค๋ Throwable ํด๋์ค๋ฅผ ์์๋ฐ๋๋ค. Exceptionํด๋์ค๋ ๋ค์ํ ์์ ํด๋์ค๋ฅผ ๊ฐ์ง๊ณ ์๋๋ฐ ํฌ๊ฒ ๋๊ฐ์ง๊ฐ ์๋ค. Che..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/TWULI/btslDZAnK9Q/3GMFSArvXiN6TIXp6vMLFK/img.png)
RestTemplate Spring์์ ์ง์ํ๋ ๊ฐ์ฒด๋ก ๊ฐํธํ๊ฒ Rest ๋ฐฉ์ API๋ฅผ ํธ์ถํ ์ ์๋ Spring ๋ด์ฅ ํด๋์ค์ ๋๋ค. Spring 3.0๋ถํฐ ์ง์๋์๊ณ , json, xml ์๋ต์ ๋ชจ๋ ๋ฐ์ ์ ์์ต๋๋ค. Rest API ์๋น์ค๋ฅผ ์์ฒญ ํ ์๋ต ๋ฐ์ ์ ์๋๋ก ์ค๊ณ๋์ด์์ผ๋ฉฐ HTTP ํ๋กํ ์ฝ์ ๋ฉ์๋(ex. GET, POST, DELETE, PUT)๋ค์ ์ ํฉํ ์ฌ๋ฌ ๋ฉ์๋๋ค์ ์ ๊ณตํฉ๋๋ค. Spring Framework 5๋ถํฐ๋ WebClient ๋ผ๋ ์๋ก์ด HTTP ํด๋ผ์ด์ธํธ๋ฅผ ๋์ ํ์ฌ ๊ธฐ์กด์ ๋๊ธฐ์ API๋ฅผ ์ ๊ณตํ ๋ฟ ๋ง ์๋๋ผ ํจ์จ์ ์ธ ๋น์ฐจ๋จ ๋ฐ ๋น๋๊ธฐ ์ ๊ทผ ๋ฐฉ์์ ์ง์ํ์ฌ, Spring 5.0 ์ดํ ๋ถํฐ๋ RestTemplate๋ deprecated ๋์์ต๋๋ค. (WebClient ..
JobParameter JobParameter๋ job์ ์คํํ ๋ ์ ๋ฌ๋๋ ๊ฐ์ด๋ค. Job ๊ฐ์ฒด์ JobParameter๊ฐ ๋ง๋์ ์คํ๊ฐ๋ฅํ ์์ ๋จ์์ธ JobInstance๊ฐ ๋ง๋ค์ด์ง๋ค. JobParameter์๋ ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌ๋ ๊ฐ์ฒด์, ๊ทธ ํ์ , ๊ทธ๋ฆฌ๊ณ JobInstance์ key๋ฅผ ๋ง๋ค๋ ํด๋น ํ๋ผ๋ฏธํฐ๋ฅผ ์ฌ์ฉํ ์ง ์ฌ๋ถ๊ฐ ๋ค์ด์๋ค. ํ๋ผ๋ฏธํฐ ํ์ ์ STRING, DATE, LONG, DOUBLE 4๊ฐ๊ฐ ์ ์๋์ด์๋ค. JobParameter๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์ @StepScope, @JobScope๋ฅผ ์ ์ธํด์ผํ๋ค. JobParameters๋ ์ธ๋ถ์์ ์ฃผ์ ๋ parameter๋ฅผ ๊ด๋ฆฌํ๋ ๊ฐ์ฒด์ด๋ค. parameter๋ฅผ JobParameters์ Spring EL(Expression Language)..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cujw4z/btskZF2Xjuz/PaXAPFTB3sqIGCxIG1WZK1/img.png)
์คํ๋ง ๋ฐฐ์น ๋์ ๊ตฌ์กฐ step์์ tasklet ๋ฐฉ์์ผ๋ก ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ๊ณผ ItemReader/ItemProcessor/ItemWriter ๋จ์๋ก Chunk ์งํฅ ํ๋ก์ธ์ฑ์ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ด ์๋ค. Tasklet ๋ฐฉ์ ๋จ๊ณ ๋ด์์ ๋จ์ผ ํ์คํฌ๋ฅผ ์ํํ๊ธฐ ์ํ ๊ฒ์ผ๋ก ์์์ Step์ ์คํํ ๋ ์ฝ๊ธฐ/์ฒ๋ฆฌ/์ฐ๊ธฐ๋ฅผ ํ๋์ ์์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ๋ฐฉ์ ์ฆ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๊ณผ์ ์ด tasklet์์์ ํ๋ฒ์ ์ด๋ค์ง๋ค Job ๊ตฌ์ฑ ํด๋์ค ์ธ๋ถ์ tasklet ํด๋์ค๋ฅผ ๋ง๋ค์ด์ ์ฐธ์กฐํ๋ ๋ฐฉ์์ด๋ค. Step์์ chunk() ๋์ tasklet()์ ์ฌ์ฉํ๋ค. tasklet์ ์ธ๋ถ ํด๋์ค๋ฅผ ๋ง๋ค๊ณ tasklet ์์ ์ ์ ์ํ๋ค. tasklet ์์ ์ ์ ์ํ ์ธ๋ถ ํด๋์ค์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก Tasklet์ implements ๋ฐ์์ ๊ตฌ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/q8FvX/btskRavDloJ/pecsTO8boZVgudcJfY4Rk0/img.png)
Batch ํฐ ๋จ์์ ์์ ์ ์ผ๊ด ์ฒ๋ฆฌ ๋๋ถ๋ถ ์ฒ๋ฆฌ๋์ด ๋ง๊ณ ๋น ์ค์๊ฐ์ฑ ์ฒ๋ฆฌ์ ์ฌ์ฉ ๋์ฉ๋ ๋ฐ์ดํฐ ๊ณ์ฐ, ์ ์ฐ, ํต๊ณ, ๋ฐ์ดํฐ๋ฒ ์ด์ค, ๋ณํ ๋ฑ ์ปดํจํฐ ์์์ ์ต๋๋ก ํ์ฉ ์ปดํจํฐ ์์ ์ฌ์ฉ์ด ๋ฎ์ ์๊ฐ๋์ ๋ฐฐ์น๋ฅผ ์ฒ๋ฆฌํ๊ฑฐ๋ ๋ฐฐ์น๋ง ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉ์๊ฐ ์ฌ์ฉํ์ง ์๋ ๋ ๋ค๋ฅธ ์ปดํจํฐ ์์์ ์ฌ์ฉํ ์ ์๋ค. ์ฌ์ฉ์ ์ํธ์์ฉ์ผ๋ก ์คํ๋๊ธฐ ๋ณด๋จ, ์ค์ผ์ค๋ฌ์ ๊ฐ์ ์์คํ ์ ์ํด ์คํ๋๋ ๋์ ์๋ฅผ ๋ค๋ฉด ๋งค์ผ ์ค์ 10์์ ๋ฐฐ์น ์คํ, ๋งค์ฃผ ์์์ผ 12์ ๋ง๋ค ์คํ Job Job์ JobLauncher์ ์ํด ์คํ Job์ ๋ฐฐ์น์ ์คํ ๋จ์๋ฅผ ์๋ฏธ Job์ N๊ฐ์ Step์ ์คํํ ์ ์์ผ๋ฉฐ, ํ๋ฆ(Flow)์ ๊ด๋ฆฌํ ์ ์๋ค. ์๋ฅผ ๋ค๋ฉด, A Step ์คํ ํ ์กฐ๊ฑด์ ๋ฐ๋ผ B Step ๋๋ C Step์ ์คํ..