Develop/BACK-END
26

[DB] ์ธ๋ฑ์ค ์ปจ๋์
ํธ์๋ค์ด(Index Condition PushDown)
0. ํ์ต ๋ชฉ์ ์ธ๋ฑ์ค ์ปจ๋์
ํธ์๋ค์ด์ ์ ์๋ฅผ ์ดํดํ๋ค.์ธ๋ฑ์ค ์ปจ๋์
ํธ์๋ค์ด์ด ํ์ฑํ๋์์ ๋์ ๋นํ์ฑํ ๋์์ ๋, ์คํ ๊ณํ์ด ์ด๋ป๊ฒ ๋ฐ๋๋์ง ์ดํดํ๋ค.1. ์ธ๋ฑ์ค ์ปจ๋์
ํธ์ ๋ค์ด์ด๋?Index Condition Pushdwon(์ดํ ICP) ๋ ๋ณด์กฐ ์ธ๋ฑ์ค๋ฅผ ํ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ์ฟผ๋ฆฌ๋ฌธ์์ ์ฌ์ฉํ๋ ์ต์ ํ ์ ๋ต์ด๋ค.๋ค์๊ณผ ๊ฐ์ด ์งํ๋๋ ์ต์ ํ๋ฅผ ICP๋ผ๊ณ ํ๋ค.์ตํฐ๋ง์ด์ ๊ฐ '๋ฒ์๋ฅผ ์ค์ผ ์ ์๋ ์กฐ๊ฑด ์ปฌ๋ผ์ด๋๋ผ๋' ๋ณด์กฐ ์ธ๋ฑ์ค์ ๊ตฌ์ฑ ์์๋ก ์กด์ฌํ๋ ์ปฌ๋ผ์ด๋ฉด, ์คํ ๋ฆฌ์ง ์์ง์๊ฒ ์ ๋ถ ์ ๋ฌํด์ค๋ค.์คํ ๋ฆฌ์ง ์์ง์ ๋ณด์กฐ ์ธ๋ฑ์ค๋ฅผ ํ์ํ ๋, ์ตํฐ๋ง์ด์ ์๊ฒ ๋ฐ์ ์กฐ๊ฑด ์ปฌ๋ผ๋ค๋ก ์ต๋ํ ์ ํจํ์ง ์์ ํํ๋ค์ ๊ฑธ๋ฌ๋ธ๋ค. ์ด๋ฅผ ํตํด ์คํ ๋ฆฌ์ง ์์ง์ด ๋ณธ ํ
์ด๋ธ์ ์ฝ๋ ํ์๋ฅผ ์ค์ธ๋ค. [!info] MyS..
2025.07.24
Develop/BACK-END

[Java] Java์์ ์ ๊ท ํํ์ ํ์ฉํ๊ธฐ
0. ํ์ต ๋ชฉ์ ์ ๊ท ํํ์์ ํ์ฉํ ์ ์๋ Java ํด๋์ค๋ค์๋ ๋ฌด์์ด ์๋์ง ํ์
ํ๋ค. ํด๋น ํด๋์ค๋ค์ ๋งค์๋์ ๋ป๊ณผ ์ฌ์ฉ๋ฒ์ ์ตํ๋ค.1. ์ ๊ท ํํ์์ ํ์ฉํ ์ ์๋ Java ํด๋์คjava.util.regex์ ์๋ Pattern ํด๋์ค์ Matcher ํด๋์ค ํ์ฉString ํด๋์ค์ ์ ๊ท ํํ์ ์ฌ์ฉ ๊ฐ๋ฅ ๋งค์๋ ํ์ฉ2. Pattern๊ณผ Matcher ์ดํดํ๊ธฐ(1) Pattern ํด๋์ค์ ๊ท ํํ์์ ์ปดํ์ผํ์ฌ ๊ฐ์ง๊ณ ์๋ ํด๋์ค๋ถ๋ณ ๊ฐ์ฒด (ํ ๋ฒ ์ ๊ท ํํ์ ์
๋ ฅํด์ ์ปดํ์ผํ๋ฉด, ์ดํ ๋์ผ Pattern ๊ฐ์ฒด์ ์ ๊ท ํํ์์ ๋ฐ๊ฟ ์ ์๋ค.)Thread-Safe -> ์ฌ๋ฌ ์ค๋ ๋์์ ๊ฐ์ Pattern ๊ฐ์ฒด ๊ณต์ ๊ฐ๋ฅPattern ํด๋์ค๋ ์ ๊ท ํํ์์ ๋ด๊ณ ์๋ ์ญํ ๋ฐ์ ํ์ง ์๋๋ค. ๋ฌธ์์ด..
2025.07.21
Develop/BACK-END

String Constant Pool: String ๊ฐ์ฒด๊ฐ ์ ์ฅ๋๋ ๊ณณ
0. ํ์ต ๋ชฉ์ String Constant Pool ์ด๋ผ๋ ๊ฐ๋
์ ๋ํด์ ์ดํดํ๋ค.String์ ์ ๋ถ๋ณ ๊ฐ์ฒด๋ก ๋ง๋ค์๋์ง ์ ์ถํ๋ค.1. String Constant Pool ์ด๋?JVM Heap์ ์กด์ฌํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ผ๋ก ๋ถ๋ณ ๊ฐ์ฒด์ธ String ๋ฆฌํฐ๋ด ์ ์ฉ ์ ์ฅ ๊ณต๊ฐ ์ด๋ค.ํ๋ก๊ทธ๋จ ๋ด๋ถ์์ ์ ์ธ๋ ๋ชจ๋ String ๋ฆฌํฐ๋ด์ String Constant Pool์ ์ ์ฅ๋๋ค.2. ํน์งString Literal ๋ง ์ ์ฅPool์ ์กด์ฌํ๋ ๋ฌธ์์ด์ด ์ฌ ์ ์ธ๋๋ฉด, ์๋ก ํ ๋นํ์ง ์๊ณ ์๋ ๊ฑฐ ์ฌํ์ฉ (1) String Literal ๋ง ์ ์ฅํ๋ค.String ๊ฐ์ฒด ์ ์ธ ๋ฐฉ์์ 2๊ฐ๋ก ๋๋๋ค.// ๋ฆฌํฐ๋ด ๋ฐฉ์ ์ ์ธString str1 = "Hello World";// ๊ฐ์ฒด ๋ฐฉ์ ์ ์ธString str2 = new..
2025.07.18
Develop/BACK-END

Java์ String
0. ํ์ต ๋ชฉ์ String์ ๋ถ๋ณ ๊ฐ์ฒด์์ ์ดํดํ๋ค.์ ์ฉํ String ํด๋์ค ํจ์๋ฅผ ์์๋ฌ์ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ฅผ ํ ๋ ์ ์ฉํ๋ค.1. String์ ํน์ง : ๋ถ๋ณ์ฑString ๊ฐ์ฒด์ ๊ฐ์ฅ ํฐ ํน์ง์ ๋ถ๋ณ์ฑ์ด ๋ณด์ฅ ๋๋ ๊ฐ์ฒด ๋ผ๋ ๊ฒ์ด๋ค.(1) final ํด๋์ค๋ก ์ ์ธ๋จfinal ํด๋์ค๋ก ์ ์ธ๋์ด ์์ด์ ์์์ด ๋ถ๊ฐ๋ฅํ๋ค.(2) ๊ฐ์ ๋ด๋ ๋ฉค๋ฒ ๋ณ์๋ private final ์String ๋ฌธ์์ด์ ์ค์ง์ ๊ฐ์ ๋ด๋ byte ๋ฐฐ์ด๋ private final๋ก ์ ์ธ๋์ด ์๋ค. ์ด ๋๋ฌธ์, String ๊ฐ์ฒด๊ฐ ํ ๋ฒ ์ ์ธ๋๋ฉด, ์ดํ ์๋ก์ด ๊ฐ์ ์ฌํ ๋น ํ ์ ์๋ค.(3) ๊ทธ๋ ๋ค๋ฉด ๋ฌธ์์ด ๋ณ๊ฒฝ ์ฝ๋๋ ํจ์๋ ์ด๋ป๊ฒ ์๋ํ ๊น?์๋์ String ๊ฐ์ฒด์ ๊ฐ์ด ์ถ๊ฐ๋๋ ๊ฒ์ด ์๋๋ผ, ์๋ก์ด String ๊ฐ์ฒด๊ฐ ๋ง๋ค์ด์ง..
2025.07.18
Develop/BACK-END

[๋ฐฑ์๋] Spring์์์ IoC ๊ตฌํ
0. ํ์ต ๋ชฉ์ Spring์์ ์ ์ด์ ์ญ์ ์ ์ด๋ป๊ฒ ๊ตฌํํ๋์ง ์ดํดํ๋ค.Spring์์ ๊ฐ์ฒด์ ์์ฑ๊ณผ ๊ด๋ฆฌ๋ฅผ ๋ด๋นํ๋ ์ปจํ
์ด๋๋ฅผ ์ด๋ป๊ฒ ์์ฑํ๋์ง ์ดํดํ๋ค.Spring์์ ๊ฐ์ฒด๋ฅผ ์ด๋ป๊ฒ ํด๋น ์ปจํ
์ด๋์ ๋ฑ๋กํ๋์ง ์ดํดํ๋ค.Spring์์ ์ด๋ป๊ฒ ๊ฐ์ฒด๋ฅผ ์ฃผ์
ํ๋์ง ์ดํดํ๋ค.1. Spring์์๋ IoC๋ฅผ ์ด๋ป๊ฒ ๊ตฌํํ๋๊ฐ?Spring์์๋ Spring IoC Container๋ผ๋ ๊ฐ์ฒด ์์ฑ๊ณผ ๊ด๋ฆฌ ์ ์ฉ ์ปจํ
์ด๋๋ฅผ ๋ง๋ค์ด์ IoC๋ฅผ ๊ตฌํํ์๋ค. Spring์์ IoC๊ฐ ์ด๋ฃจ์ด์ง๋ ๊ณผ์ ์ ๊ทธ๋ ค๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.์ถ์ฒ: javaguide.net๊ณผ์ ์ ๋ง๋ก ํ์ด๋ณด๋ฉด,ํ๋ก๊ทธ๋จ ์์ ์, Spring IoC Cotainer๊ฐ ApplicationContext ๊ตฌํ์ฒด๋ก ์์ฑ๋๋ค.์ปจํ
์ด๋๊ฐ ์์ฑํ๊ณ ๊ด๋ฆฌํ ๊ฐ์ฒด๋ฅผ ์ฐพ๋๋ค...
2025.07.14
Develop/BACK-END

[๋ฐฑ์๋] IoC (Inversion of Control)๋?
0. ํ์ต ๋ชฉ์ IoC (inversion of Control)์ด ๋ฌด์์ธ์ง ์ดํดํ๋ค.1. IoC ๋?๊ฐ์ฒด ์์ฑ๊ณผ ๊ด๋ฆฌ์ ๋ํ ํต์ ๊ถ์ ๊ฐ๋ฐ์์์ ํ๋ ์์ํฌ๋ก ๋๊ธฐ๋ ๊ฒ์ ๋งํ๋ค.(1) IoC ์ด์ ์ ์ ํต์ OOP ๋ฐฉ์ ๋ชจ๋ ๊ฐ ๊ฒฐํฉpublic class OrderController { public void processOrder() { // ์ง์ ๊ฐ์ฒด ์์ฑ - ๊ฐํ ๊ฒฐํฉ PaymentService paymentService = new PaymentService(); EmailService emailService = new EmailService(); // ์ฌ์ฉ paymentService.processPayment(); emai..
2025.07.14
Develop/BACK-END

SELF INVOCATION์ ์ ์, ์๋ฆฌ, ํด๊ฒฐ ๋ฐฉ๋ฒ
0. ํ์ต ๋ชฉ์ SELF INVOCATION์ด ๋ฌด์์ธ์ง, ์ธ์ ์ผ์ด๋๋์ง ์ดํดํ๋ค.ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ๋ฌด์์ธ์ง ์ดํดํ๋ค.1. SELF INVOCATION ์ด๋?AOP ๋งค์ปค๋์ฆ ์ฌ์ฉ ์ ๊ฒช์ ์ ์๋ ๋ถ์์ฉ ์ค ํ๋์ด๋ค.ํน์ ๊ฐ์ฒด์ ๋ฉค๋ฒ ๋งค์๋ A๊ฐ ๊ฐ์ ๊ฐ์ฒด ๋ด๋ถ์ ๋งค์๋ B๋ฅผ ์ง์ ํธ์ถํ ๋, B์ ๊ฑธ๋ ค์๋ AOP๋ ๋ฌด์๋๋ ํ์์ด๋ค.(1) ์์๋ค์๊ณผ ๊ฐ์ ํด๋์ค TEST ๊ฐ ์กด์ฌํ๋ค๊ณ ํด๋ณด์.public class Test { public void methodAB(A a, B b) { methodA(A a); methodB(B b); } @Transactional public void methodA(A a) { repository.save(A a); ..
2025.06.30
Develop/BACK-END

@Transactional์ ๊ดํ์ฌ
0. ํ์ต ๋ชฉ์ @Transactional์ด ๋ฌด์์ธ์ง ์ดํดํ๋ค@Transactional์ ๊ตฌ์ฑ์์์ ์๋์๋ฆฌ๋ฅผ ์ดํดํ๋ค.์ ์๋ก์ด ์ค๋ ๋์๋ ํธ๋์ญ์
์ด ์ ํ๋์ง ์๋์ง ์ดํดํ๋ค.1. @Transactional ์ด๋?Spring Framework์์ ํธ๋์ญ์
์ ์ ์ธ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๊ฒ ๋ง๋ ์ด๋
ธํ
์ด์
(1) '์ ์ธ์ ์ผ๋ก ๊ด๋ฆฌํ๋ค. ' ์ ์๋ฏธํธ๋์ญ์
๊ด๋ฆฌ๊ฐ ํ์ํ ํด๋์ค๋ ๋งค์๋์ @Transactional ์ด๋
ธํ
์ด์
์ '์ ์ธ'๋ง ํ๋ฉด, ์ ์ธ๋ ๋ฒ์๋ฅผ ํ๋์ ํธ๋์ญ์
์ปจํ
์คํธ๋ก ๋ฌถ์ด์ ๊ด๋ฆฌํด์ค๋ค.์ฅ์ ์ ๋ค์๊ณผ ๊ฐ๋ค.ํธ๋์ญ์
๊ฐ์ ๊ฒฝ๊ณ ํ์
์ด ์ฝ๋ค.๋น์ฆ๋์ค ๋ก์ง๊ณผ ํธ๋์ญ์
๊ด๋ฆฌ ๋ก์ง์ด ๋ถ๋ฆฌ๋์ด ๋น์ฆ๋์ค ๋ก์ง ์ง์ค๊ณผ ์ ์ง๋ณด์๊ฐ ์์ํด์ง๋ค.(2) ํธ๋์ญ์
์ ์ธ ๋ฒ์์ ๋ฐ๋ฅธ ์๋ฏธํด๋์ค์ ์ค์ ์, ํด๋น ํด๋์ค์ ๋ชจ..
2025.06.30
Develop/BACK-END

[๊ฐ๋ฐ ์ง์] AOP (๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ)์ ๊ฐ๋
0. ํ์ต ๋ชฉ์ AOP๊ฐ ๋ฌด์์ธ์ง ์ดํดํ๋ค.AOP๊ฐ ๋์ค๊ฒ ๋ ์ด์ ์ ๋ํด ์ดํดํ๋ค.AOP์ ๊ตฌ์กฐ์ ์ฉ์ด๋ค์ ์ดํดํ๋ค.AOP์ ์๋์๋ฆฌ๋ฅผ ์ดํดํ๋ค.SPRING์์ AOP๋ฅผ ์ด๋ป๊ฒ ๊ตฌํํ ์ ์๋์ง ๊ทธ ๋ฐฉ๋ฒ๋ค์ ๋ํด ์ดํดํ๋ค.1. AOP ๋?AOP๋ Aspect Oriented Programming (๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ) ์ ์ฝ์๋ก, ๊ด์ฌ์ฌ ๋ผ๋ ๊ด์ ์ ๋ฐ๋ผ ์๋น์ค๋ฅผ ๋ถ๋ฆฌํ์ฌ ํ๋ก๊ทธ๋๋ฐ ํ๋ ๋ฐฉ๋ฒ์ ๋งํ๋ค.์ฌ๊ธฐ์ ๊ด์ฌ์ฌ๋ ๋ ๊ฐ๋ก ๋๋๋ค.ํต์ฌ ๊ด์ฌ์ฌ (Core Concern): ์ฌ์ฉ์๊ฐ ์๊ตฌํ๋ ๋น์ฆ๋์ค ๋ก์ง ๊ทธ์์ฒดํก๋จ ๊ด์ฌ์ฌ (Cross-cutting Concern): ์ฌ์ฉ์์ ์๊ตฌ ์ธ์ ๋ถ๊ฐ์ ์ธ ๋ก์ง (ํธ๋์ญ์
๊ด๋ฆฌ, ๋ก๊น
, ๋ณด์, ๋ฉํธ๋ฆญ ์์ง)ํ๋์ ์๋น์ค ๊ฐ์ฒด ๋ด์์ ํต์ฌ ๊ด์ฌ์ฌ ์ ํก๋จ ๊ด์ฌ์ฌ ๋ฅผ..
2025.06.22
Develop/BACK-END

[๋ฐฑ์๋] Tistory-card-stats, ๊นํ๋ธ ํ๋กํ ์ฉ ํฐ์คํ ๋ฆฌ ์นด๋ ๋ง๋ค๊ธฐ (1)
0. tistory-card-stat ์ ๋ง๋ค๋ ค๊ณ ํ ์ด์ ํฐ์คํ ๋ฆฌ๋ฅผ ๊ธฐ์ ๋ธ๋ก๊ทธ๋ก ํ์ฉํ๊ณ ์๋๋ฐ, ๋ด๊ฐ ํฐ์คํ ๋ฆฌ์ ์ด ์ต์ ๊ธ ๋ด์ฉ์ ๊นํ๋ธ ํ๋กํ์ ๊ฐ์ ธ์ค๊ณ ์ถ์๋ค. ์๋๋ค Velog์ ๊ฒฝ์ฐ, ์ด๋ฌํ ๊ฐ์ฆ์ ํด์ํด์ค ๋๋ฌด๋ ์ธ๋ จ๋ ์นด๋๊ฐ ์ด๋ฏธ ์กด์ฌํ๋ค.๋ง๋์ ๋ถ ๊นํ๋ธ - enugyeole-velog-readme-stat์ด๋ ๊ฒ ์๊ธฐ velgo ๊ณ์ ์ ๋ฃ์ผ๋ฉด ๋ด์ฉ์ด ๋ณด์ด๋๋ก ํด์ฃผ๊ณ ์๋ค. ํฐ์คํ ๋ฆฌ๋ ๊ด๋ จ๋ ์คํ ์์ค๊ฐ ์๋์ง ํ์ธํ๊ธฐ ์ํด ๊นํ๋ธ๋ฅผ ๋ค ๋ค์ก์ง๋ง ์กด์ฌํ์ง ์์๋ค. ์ ์กด์ฌํ์ง๋ง, ๋ ์ด์ ์๋น์ค๋ฅผ ํ์ง ์๊ณ ์๋ ์ค์ด์๋ค. ๊ทธ๋ฆฟ ์์ ํด๋น์ด๋ผ๋ ๊ฐ๋ฐ์ ๋ถ ๊ป์ Gihub Profile ์ ์ฉ card-stat์ ๋ง๋ค์์ผ๋, ๋ ์ด์ ์๋น์ค ํ๊ณ ์์ง ์์๋ค.์ ๊ทธ๋ฐ์ง ๋ดค๋๋, ์ด์ ๊ฐ ๋ค์..
2025.04.17
Develop/BACK-END

[์ฑ๋ฅ ํ
์คํธ] Jmeter๋ก ์๋๋ฆฌ์ค ํ
์คํธ ์์ฑํ๊ธฐ
0. ๋ค์ด๊ฐ๋ฉฐ...ํ์ฌ ๊ตฌ์ธ ๊ตฌ์ง ์๋น์ค์ ์๋ฒ๋ฅผ ๋ง๋ค๋ฉฐ, ๋ค์๊ณผ ๊ฐ์ด ๊ตฌํํ ์ํ์ด๋ค. ์ผ (job)๊ณผ ํ์ (member)๋ ๋งค์นญ(matching)์ด๋ ๊ต์ฐจ ํ
์ด๋ธ์ ๋๊ณ , ์๋ก ๊ด๊ณ๋ฅผ ๋งบ๊ณ ์๊ธฐ์, ์ฐ๊ด์ด ์๋ ํ์์ ์ผ๊ณผ ํ๋์ ์ํ๋ฅผ ๊ฐ์ง๋ค.์์ ์๋ขฐ์ธ์ ์ผ์ ์ฃผ์ธ์ด๋ค. ๋ฐ๋ผ์ ์ํ๋ OWNER๋ง ๊ฐ์ง๋ค. ๋ฐ๋ฉด ํด๊ฒฐ์ฌ๋ ์์ ์ ํ์ฌ ๋จ๊ณ์ ๋ฐ๋ผ ๋ค๋ฅธ ์ํ๋ฅผ ๊ฐ์ง๋ค. ์ ์ฒญ๋ง ํ๊ฑฐ๋ ์๋ขฐ์ธ์๊ฒ ์ ์๋ขฐ๋ฅผ ๋ฐ์ ์ํ๋ผ๋ฉด, ATTENDER๋ REQUEST๋ฅผ ๊ฐ์ง๊ณ , ์๋ขฐ์ธ์๊ฒ ํด๊ฒฐ ์์ฒญ์ ์น๋ ํน์ ๊ฑฐ์ ๋ฐ๊ฑฐ๋ ํน์ ํด๊ฒฐ์ฌ๊ฐ ์ ์๋ขฐ๋ฅผ ์น๋ ํน์ ๊ฑฐ์ ํ ์ํ์ด๋ฉด, YES ํน์ NO๋ผ๋ ์ํ๋ฅผ ๊ฐ์ง๋ค.START๋ ์ผ์ ์ง์ง ์์ํด์ผ๋ง ๊ฐ์ง๋ ์ํ์ด๋ฉฐ, SLEEP์ ํด๊ฒฐ์ฌ๊ฐ ์ผ ํด๊ฒฐ์์ ๋
ธ์ผํ ๊ฒฝ์ฐ ์๋ขฐ์ธ์ด..
2025.03.25
Develop/BACK-END

[์ฑ๋ฅ ํ
์คํธ] ๋๋์ ์ ์ ๋์ ์ ์ํ JWT ํ ํฐ ์ถ์ถ ๋ฐ ์์ง๊ธฐ ๊ตฌํ
0. ๋ค์ด๊ฐ๋ฉฐ...ํ์ฌ ์งํํ๊ณ ์๋ ๊ตฌ๋ฆ PROTECT์์ ๊ตฌํํ API์ ๋ํ ์ฑ๋ฅํ
์คํธ๋ฅผ ํ๊ณ ์๋ค. ํ์๋ ์ง์ ํ ๋๋์ ์ฑ๋ฅ ํ
์คํธ๋ฅผ ์ํด์๋ ๋งค๋ฒ ๋ค๋ฅธ JWT ํ ํฐ ๊ฐ์ด Header์ ๋ด๊ฒจ์ผ ํ๋ค๊ณ ์๊ฐํ๋ค. ์ด์ ๋ ๋ค์๊ณผ ๊ฐ๋ค.์ค์ ์ ๊ฐ์ ํ๊ฒฝ์ ์ต๋ํ ๊ตฌํํ ์ ์๋ค. ์ค์ ์๋น์ค์์๋, ๋ค๋ฅธ ์ฌ์ฉ์๋ ํ ๋ช
๋ ์ฌ์ฉํ์ง ์๋๋ฐ, ํ ์ฌ๋๋ง ์์ฒญ์ 5๋ง ๋ฒ ํ๋ ๊ฒฝ์ฐ๋ ๊ทนํ ๋๋ฌผ ๊ฒ์ด๋ค. ํ ์ฌ๋์ด ๋งค๋ฒ ๊ฐ์ ์์ฒญ์ ํ ๊ฒฝ์ฐ, DB ์บ์ฑ๊ณผ ์๋ฒ ์บ์ฑ์ผ๋ก ํด๋น ๋ด์ฉ์ด ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ ๊ฒ์ด๋ฏ๋ก, ์ง์ ํ ์๋ฒ์ ์ฑ๋ฅ์ ๋ณผ ์ ์์ ๊ฒ์ด๋ผ ํ๋จํ๋ค.๋ฐ๋ผ์ ์ฌ๋ฌ ๋ช
์ด ์๋น์ค๋ฅผ ๊ฐ์ ์ฌ์ฉํ๊ณ ์๋ ๊ฒ์ ํ๋ด๋ด๊ณ ์ HEADER์ Authorization์ ๋งค ๋ฒ ๋ค๋ฅธ ํ ํฐ ๊ฐ์ ๋ฃ์๋ค.1. ํ ํฐ ์์ฑ ..
2025.03.24
Develop/BACK-END

Log ์๊น ์
ํ๊ธฐ
0. ๋ก๊ทธ๊ฐ ํฐ์์ด๋ฉด...๋ณด๊ธฐ๊ฐ ํ๋ค๋ค.์ด๊ฒ ์ธํ
๋ฆฌ์ ์ด์์ ๋ณด๋ฉด ๊ทธ๋๋ง ๋์๋ฐ, ๋ฐฐํฌ๋ ์๋ฒ๋ก ๋ค์ด๊ฐ ๋ก๊ทธ๋ฅผ ๋ณผ๋ ค๊ณ ์น๋ฉด ์ ๋ง ๊ตฌ๋ถํ ํ๋ค์ด์ง๋ค. ์ด๋ฅผ ์ํด๋ก๊ทธ ๋ ๋ฒจ ๋ณ๋ก ์๊น์ ์ ์ฉํ์ฌ ๊ฐ๋
์ฑ์ ๋์ด๋ ค ํ๋ค.1. ์ ์ฉ ๋ฐฉ๋ฒ(1) ํ์ผ ๊ตฌ์กฐ ๋ฐ ์์กด์ฑ ์ฝ์
resources ๋ถ๋ถ์ logBack์ ๋๋ค. ์ดํ ๋ก๊น
๊ณผ ์ค์ ๊ตฌํ ์ฝ๋ ๊ฐ์ ๊ด์ฌ์ฌ ๋ถ๋ฆฌ๋ฅผ ์ํด @SLF4J ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฝ์
ํ๋ค. ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐ์ง ์์ผ๋ฉด ๋ก๊ทธ๋ฅผ ์ฐ๊ณ ์ถ์ ๋ชจ๋ ํด๋์ค๋ง๋ค Logger ๊ฐ์ฒด๋ฅผ ์ฃผ์
๋ฐ์์ผ ํ๋ค. ์ด๋ ๊ฐ์ฒด๊ฐ์ ๊ฒฐํฉ๋๋ฅผ ๋์ด๊ณ , Logger ๊ธฐ๋ฅ ์์ฒด์ ์ ์ฐ์ฑ๋ ์ค์ธ๋ค. (์ฒ์์ Log-Back ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐ๋ค๊ฐ Log4j๋ก ๋ฐ๊พธ๊ณ ์ถ์ ๋ @SL4FJ๋ฅผ ์ ์ด๋ค๋ฉด ๋ชจ๋ Logger ๋ฉค๋ฒ๋ฅผ ๋ฐ๊ฟ์ค์ผ ํ๋ค;;)..
2025.02.13
Develop/BACK-END

Jasypt๋ฅผ ํ์ฉํด Secret-key ์ํธํ ๋ฐ ์๋ฒ ๋ฐฐํฌ ์ ์๋ ๋ณตํธํ
0. ์ ํ์ํ๊ฐ์ธ๋ถ API๋ DB, ๋ฏธ๋ค์จ์ด ์ฐ๋์ ์ํด์๋ ํ์ฉ์ ์ํด ์ฝ์ํ secret-key๋ฅผ ๋ค๊ณ ์์ด์ผ ํ๋ค. ๋ณดํต ๊ฐ๋ฐ์๋ค์ ์ค์ ํ์ผ์ ๊ทธ๊ฒ์ ๋ชฐ์๋ฃ๊ณ , @Value()๋ฅผ ํ์ฉํ์ฌ ๊ทธ๊ฒ๋ค์ ๋ถ๋ฌ์จ๋ค. ๋ค์ ์ฌ์ง๊ณผ ๊ฐ์ด ๋ง์ด๋ค.์ด๋ฐ secret-key๋ค์ ์ ์ถ๋๋ฉด ํดํน ๋ฑ ํ๋ก์ ํธ์ ์น๋ช
์ ์ธ ์ํ์ ์ค๋ค. ๊ทธ๋์ ๊ฐ๋ฐ์๋ค์ ํญ์ ์ด๊ฒ๋ค์ ๋ํด ์ ๊ฒฝ ์ฐ๊ณ , ์ธํ๋ผ ํ ๋ํ Jenkins๋ DockerHub์ ํค ๋ฆฌ์คํธ๋ค์ ๋ฐ๋ก ๊ด๋ฆฌํด์ผ ํด์ ๊ณจ์น ์ํ๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด Java์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ Jasypt๋ฅผ ํ์ฉํ๋ค.1. Jasypt๋?(0) ์ ์๋จ๋ฐฉํฅ ์ํธํ ํน์ ๋จ์ผ ํค ์๋ฐฉํฅ ์ํธํ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฐ์ ์ด๋ผ ํ๋ค๋ฉด Jasypt๋ก ์ํธํํ ๋์์ ํน์ ํ..
2025.02.12
Develop/BACK-END

๊ณตํต ์๋ต ์๋ํ ์ค๊ณ ๋ฐ ๊ตฌํ (๋ดํฌ ํจํด ๋์
- @ResponseBody Advice)
0. ํ์์ฑ์ ๋ฒ์ ํ๋ 6์ธ ํ๋ก์ ํธ์ ๋ฐํ ํ๊ฒฝ ๋ชจ์ต์ด๋ค. ๋น์ ResultResponse๋ผ๋ ํ ๋ด์ ๊ณตํต ์๋ต ๊ท์น์ ์ ํ๊ณ , ResponseEntity๋ก ๋ฐํํ๊ธฐ ์ ์ DTO๋ฅผ ResultResponse๋ก ํ ๋ฒ ๋ ๊ฐ์ธ์ ๋ฐํํ๋ค.๊ทธ ๋น์์๋ ํฐ ๋ถํธํจ ์์ด ํ๋ ๊ฒ ๊ฐ์ง๋ง, ๋ค์ ๋ณด๋ 2๊ฐ์ง ๋ถํธ ์ฌํญ์ด ์์๋ค.1๏ธโฃ ๋งค์๋์ ๋ฐํ ํ์
์ ํญ์ ResponseEntity์ ResultResponse๋ก ๊ฐ์ธ์ค์ผ ํ๋ค. ์ค์ ํ์๊ฐ ํ๋ก ํธ ๊ฐ๋ฐ์์๊ฒ ์ค์ผํ JSON ๋ฐํ ๊ฐ์ฒด๋ TokenDTO์ธ๋ฐ, ๊ทธ์ ๋ฐํ ๊ท์น์ ์ํด์ ํ๋ก์ธ์ค์์๋ ๋ถํ์ํ ๊ฐ์ฒด๋ฅผ ์ถ๊ฐํด์ผ๋ง ํ๋ค.2๏ธโฃ ๊ฐ์ ์ด์ ๋ก ๋ฐํ๊ฐ ๋ํ ๋ ๊ฐ์ฒด๋ฅผ ํ์ฉํด ๊ฐ์ธ์ค์ผ ํ๋ค.์ด๋ 3์ธ์ ๋ฐฑ์๋ ๊ฐ๋ฐ์ ์ค ํ ๋ช
์ด๋ผ๋ ์ค์๋ก ResultRe..
2025.02.12
Develop/BACK-END

[ํ ํฐ ์ธ์ฆ ๋ฐฉ์]์ ์๋ฆฌ, ์ธ์
์ธ์ฆ๊ณผ์ ์ฐจ์ด์
1. Token ์ธ์ฆ ๋ฐฉ์์ด ์ด๋ป๊ฒ ์ด๋ฃจ์ด ์ง๋๊ฐํ์์ด ๋ก๊ทธ์ธ์ ์๋ํ๋ค๊ณ ๊ฐ์ ํด๋ณด์.โ Client๊ฐ ID/PW ๋ก๊ทธ์ธ ์ฐฝ์ ์จ์ ์ ์ถํ๋ค.โ Server๊ฐ DB๋ฅผ ํตํด ํด๋น ID/PW๋ฅผ ๊ฐ์ง ํ์์ด ์๋์ง ํ์ธํ๋ค.์ฌ๊ธฐ์ ํด๋น ํ์์ ์ ๋ณด๊ฐ ์ฐ๋ฆฌ DB์ ์์ด์ ์ฐ๋ฆฌ ํ์์ธ ๊ฒ์ด ํ์ธ ๋์๋ค๊ณ ๊ฐ์ ํด๋ณด์.โ Server์์ ํด๋น ํ์์ ์ ๋ณด๋ฅผ ์ด์ฉํ์ฌ ๊ณ ์ ํ Token์ ๋ง๋ ๋ค.โ ๊ทธ๋ฆฌ๊ณ ํด๋น ํ ํฐ์ ์๊น ์ ํจํ ์์ฒญ์ ํ ํด๋ผ์ด์ธํธ์๊ฒ ๋ณด๋ด์ค๋ค.โ ์ด์ ํด๋ผ์ด์ธํธ๋ ์ธ์ฆ์ด ํ์ํ API๋ฅผ ์ด์ฉํ ๊ฒฝ์ฐ ํด๋น Token์ ์์ฒญ Header์ ๋๋ดํ์ฌ ๊ฐ์ด ๋ณด๋ธ๋ค.โ ์ด์ ์๋ฒ์์๋ ํด๋น Token์ ์ ํจ์ฑ์ ๊ฒ์ฆ ํ ์ ํจํ ํ ํฐ์ด ๋ง๋ค๋ฉด ์๋ต์ผ๋ก ์์ฒญํ ๋ด์ฉ์ ๋ํ ์ ์ ๋ต๋ณ์ ๋ณด๋ด์ฃผ๋ฉด ๋๋ค.๊ทธ๋ ๋ค๋ฉด ๊ธฐ..
2024.07.07
Develop/BACK-END

[Intellij] Git Shelve์ Stash์ ์ฐจ์ด
1. Git Shelve - ์ ์ ๋ค๋ฅธ๋ฐ ๋ค๋
์ฌ๊ฑฐ๋๊น. ์์
ํ๋ ๊ฑฐ ์ ๋ฐ์ ์ฌ๋ ค๋์!git shelve๋ฅผ ํ๋ฉด ํด๋น Branch์ ์์ ์ ์ฅ์์ ์ ์ฅ๋๋ค.ํ branch์ ๋ณ๊ฒฝ์ฌํญ์ ๋ค๊ณ , ๋ค๋ฅธ branch์ ๋๋๋ ํ์๋ฅผ ๋ชปํ๋ค.ํด๋น ๋ธ๋์น์ ์์
ํ๋ ๊ฒ์ ์์ ์ ์ฅํ๊ณ , ๋ค๋ฅธ branch์์ ์ผ ๋ณธ ๋ค์ ๋ค์ ๋์์์ unshelved ํ๋ฉด ๋๋ค.์์์ ์ฅํ ๊ฑฐ ๋นผ๋ด ์ค๋ ค๋ฉด์ ๊ฑธ ๋๋ฌ์ ๋ค์ changes๋ก ๋ค๊ณ ์์ผ ํ๋ค.unshelved ํ๋ค๊ณ ํด์ shelf์ ์ ์ฅ๋ ์์ ์ ์ฅ ๋ด์ญ์ด ์ฌ๋ผ์ง์ง ์๋๋ค. ์์ ๊ณ ์ถ๋ค๋ฉด ์ญ์ ํ์.2. git stash / unstash - ํ branch์์ ์์
ํ ๋ด์ญ ๋ค๊ณ ๋ค๋ฅธ branch๋ก ๊ฐ๋. ๊ฑฐ๊ธฐ์ ์์
๊ณ์ ์ด์ด ๊ฐ๋Intellij ์์๋ git -> un..
2024.05.06
Develop/BACK-END

ํนํ ํ๋ก์ ํธ Spring Security ๋ถ์
1. ๊ฐ์4์ 5์ผ๋ถ๋ก ํนํ ํ๋ก์ ํธ๊ฐ ๋๋ฌ๋ค. ์ด๋ฒ ํ๋ก์ ํธ์์ ๋ณด์์ ๋งก์๋๋ฐ, ํญ์ ๋ด๊ฐ ๋งก์ ํํธ๋ฅผ ์ ๋ฆฌํด์ผ๊ฒ ๋ค๋ ์๊ฐ์ ํ๋ค. ๋ฒ์จ 2์ฃผ ๋ฐ์ด ํ๋ ๊ธฐ์, ๋ ๊น๋จน๊ธฐ ์ ์ ๋ฏธ๋ฆฌ ์ ๋ฆฌํด๋๋ คํ๋ค.ํด๋น ํ๋ก์ ํธ์ ์ ๋ฌธ์ ๋ณด๊ณ ์ถ๋ค๋ฉด, ๋ค์์ ํ์ธํ์.SSAFY 10๊ธฐ ๊ตฌ๋ฏธ 2๋ฐ ํนํํ๋ก์ ํธ WALK_WALK2. ์ ๊ฐ๋3. ์ฝ๋ ๋ถ์(1) JwtAuthFilter ์์ ์๋ JwtUtil ๋ถ์import io.jsonwebtoken.*;import io.jsonwebtoken.security.Keys;import jakarta.annotation.PostConstruct;import jakarta.servlet.http.HttpServletRequest;import lombok.RequiredArgsCo..
2024.04.26
Develop/BACK-END

JWT์ ๋ํ์ฌ
1. JWT๋ ๋ฌด์์ธ๊ฐ?๊ธฐ๋ณธ์ ์ธ ํ ํฐ ์ธ์ฆ ๋ฐฉ์์ ๋ฐ๋ฅด๊ณ , ๊ฑฐ๊ธฐ์ ํ ํฐ ์์ฒด๋ฅผ ๊ฐํํ ๋ฐฉ์์ด๋ผ ์๊ฐํ๋ฉด ๋๋ค.์๋์ ํ ํฐ ์ธ์ฆ ๊ธฐ๋ฐ์์ ์์ฒญ์๊ฐ ๋ณด๋ด์จ ID/PW ๊ฐ DB์ ์กด์ฌํ๋ฉด (์ฐ๋ฆฌ ํ์์ด ๋ง์ผ๋ฉด) ๊ทธ ์์ฒญ์์๊ฒ ์์ ๋ค์ API๋ฅผ ์ธ ์ ์๋ ํ๊ฐ์ฆ์ธ ํ ํฐ์ ์ ํด์คฌ์๋ค. ์ฌ๊ธฐ์ ๋ํด JWT์ ๊ฒฝ์ฐ ํ ํฐ์ ๋ง๋ค ๋, ์ฌ์ฉ์์ ์ ๋ณด(๊ฐ๋จํ ๊ฐ์ธ์ ๋ณด ๋ฑ +@)๋ฅผ ์ํธํํ์ฌ ๋ง๋ ๋ค.์ด๋ ๊ฒ ๋๋ฉด ๋ฌด์์ด ์ข์๊น?์๊น ํ ํฐ ์์ฒด๊ฐ ์ฌ์ฉ์์ ๋ํ ๊ฐ์ธ ์ ๋ณด๋ผ๊ณ ํ์๋ค. ํ์๊ฐ์
์ ํ์ฌ ํ ํฐ์ ๋ฐ์๋ค๋ฉด, ์ดํ API ์์ฒญ์ ํ ๋, ํ ํฐ์ Header๋ Cookie์ ๋ฃ์ด์ ๋ณด๋ธ๋ค. ๋ง์ฝ ํด๋ผ์ด์ธํธ๊ฐ ์ํ๋ ์์ฒญ์ด ์ฌ์ฉ์์ ๊ฐ์ธ์ ๋ณด์ ๋ํ ์์ฒญ์ด๋ผ๋ฉด, ์๋ฒ์์๋ DB๋ฅผ ์กฐํํ ํ์์์ด ํ ํฐ์ ๋ณตํธํ ํ์ฌ ๊ทธ ์์..
2024.04.25
Develop/BACK-END

Weaving๊ณผ Proxy์ ๋ํ์ฌ
๊นํ๋ธ์๋ ์ ๋ฆฌ ์ฌ๋ ค๋์์ต๋๋ค.์ ์๋ฏผ_๊นํ๋ธ ์ฃผ์Weaving๊ณผ Proxy ๊ฐ์ฒด์ ๋ํ์ฌ์ด๋ฒ ์ฅ์์ ์์๋ณผ ๊ฒ:AOP์์ Weaving์ด๋ ๋ฌด์์ธ๊ฐ? Proxy์์ ๊ด๊ณ๋ ์ด๋ป๊ฒ ๋๋๊ฐ?Proxy ๊ฐ์ฒด๋ ๋ฌด์์ด๊ณ ? AOP์์ ์ฌ์ฉ๋๋ ์๋ฆฌ๋ ๋ฌด์์ธ๊ฐ?1. AOP์์ Weaving์ด๋ ๋ฌด์์ธ๊ฐ?AOP์์ weaving์ด๋ ๋ถ๊ฐ๊ธฐ๋ฅ(advice)์ ๊ทธ๊ฒ์ด ํ๊ฒํ
ํ๋ ๋ณธ ๊ธฐ๋ฅ์ ์ฅ์ฐฉํ๋ ์์
์ ๋งํ๋ค. ๋ฐ๋ผ์ weaving์ ๋ณธ๊ธฐ๋ฅ์ ์ํฅ์ ์ฃผ์ง ์์ผ๋ฉด์ ๋ถ๊ฐ๊ธฐ๋ฅ์ ์ฐ๊ฒฐ์ํค๋ AOP์ ํต์ฌ ์์
์ด๋ค.weaving์ ์คํ๋๋ ์์ ์ ๋ฐ๋ผ 3๊ฐ์ง๋ก ์ข
๋ฅ๊ฐ ๋๋๋ค.(1) Compile Time Weaving(CTW)Spring์์ AOP๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์๋ AspectJ๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐ๋ ๊ฒ๊ณผ, Spring A..
2024.03.12
Develop/BACK-END

[01]-OAuth2 ์ด๋ก
๋ชฉ์ฐจ1. OAuth2์ ๋ฑ์ฅ ๋ฐฐ๊ฒฝ (OAuth2๋ ์ ํ์ํ๊ฐ?)2. ๊ทธ๋์ OAuth2๋?3. OAuth2 ๊ด๋ จ ์ฉ์ด ์ ๋ฆฌ 4. OAuth2์ ๋์ ๊ณผ์ 1. OAuth์ ๋ฑ์ฅ ๋ฐฐ๊ฒฝ (OAuth2๋ ์ ํ์ํ๊ฐ?)ํ IT ์๋น์ค ์์ฅ์๋ ๊ตฌ๊ธ์ด๋ ์๋ง์กด, ํธ์ํฐ์ ๊ฐ์ ๋ฉ๊ฐ๊ธ ๊ธฐ์
๋ค์ด ๋ค์ ์กด์ฌํ๋ค. ์ด ๊ธฐ์
์ ์ฌ์ฉ์๋ค์ ์์ฒ๋ง ๋ง๊ฒ๋ ์ต๋ ๋จ์๋ก ๋์ด๊ฐ๋ค. ๊ทธ ๋งํผ ํด๋น ๊ธฐ์
๋ค์ด ๊ฐ์ง ๋ฆฌ์์ค๋ ๋ค์ ์กด์ฌํ ๊ฒ์ด๋ค. ํ์ง๋ง, ๋จ์ฒด์ํ์ ํด๋ดค๋ค๋ฉด ์ ์์๋ฏ์ด ํ๋์ ์ผ์ ์์
์ ์ ์์ด ๋ง์กฑํ๋ ๋ฐฉ์์ผ๋ก ์ํํ๋ค๋ ๊ฒ์ ๋ถ๊ฐ๋ฅ์ ๊ฐ๊น๋ค. A๋ ์๋ฅ ์์
์ ๋ ์๋ฒฝํ ํ๊ณ ๋ค์ ์ผ๋ก ๊ฐ์ผ๋ฉด ์ข๊ฒ ๊ณ , B๋ ๊ทธ์ ๋ณธ ์์
์ ๋นจ๋ฆฌ ์งํํ๊ณ ์ถ์ ์๋ ์๋ค. ์ด๋ ์ฐ๋ฆฌ๊ฐ ํน์ ์๋น์ค๋ฅผ ์ด์ฉํ ๋๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ค. ..
2024.03.03
Develop/BACK-END