Banner

My Tech Blog (์ฐจ์ด)

์˜ค๋Š˜์˜ ๋ช…์–ธ
" ์ธ์ƒ์€ ๊ฐ€๊นŒ์ด์„œ ๋ณด๋ฉด ๋น„๊ทน์ด์ง€๋งŒ, ๋ฉ€๋ฆฌ์„œ ๋ณด๋ฉด ํฌ๊ทน์ด๋‹ค. "
- ์ฐฐ๋ฆฌ ์ฑ„ํ”Œ๋ฆฐ (์˜๊ตญ ์ถœ์‹  ์ฝ”๋ฏธ๋””์–ธ, ๋ฐฐ์šฐ, ์˜ํ™” ๊ฐ๋…)
์ž๋ฐ”๊ฐ€ ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ (JVM) ์œ„์—์„œ ์‹คํ–‰๋œ๋‹ค๋Š” ๊ฒƒ์€ ์ตํžˆ ์•Œ๋ ค์ง„ ์‚ฌ์‹ค์ด๋‹ค. ์ดํด๋ฆฝ์Šค๋ฅผ ๋‹ค์šด๋กœ๋“œํ•  ๋•Œ๋Š” ์ดํด๋ฆฝ์Šค ๋ฒ„์ „์— ํ˜ธํ™˜๋˜๋Š” JDK๋„ ํ•จ๊ป˜ ์„ค์น˜ํ•œ๋‹ค.๋˜ํ•œ, ์ดํด๋ฆฝ์Šค ์„ค์ •์—์„œ [Installed JREs]์—์„œ JRE๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด์„œ, ๊ธฐ์กด์— ๋‘๋ฃจ๋ญ‰์ˆ ํ•˜๊ฒŒ ์•Œ๊ณ  ์žˆ๋˜ JDK์™€ JRE์˜ ์ฐจ์ด๊ฐ€ ๊ถ๊ธˆํ•ด์กŒ๋‹ค.๊ทธ๋ž˜์„œ ์˜ค๋Š˜์€ ๊ฐœ๋…์„ ๋ช…ํ™•ํžˆ ์ •๋ฆฌํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค.  1. JDK vs JRE vs JVM ์ฐจ์ด์ง„์งœ ๊ฐ„๋‹จํžˆ ์š”์•ฝํ•˜๋ฉด  ์ž๋ฐ”๋กœ ๊ฐœ๋ฐœํ•  ๋•Œ โ†’ JDK ํ•„์š” (์ปดํŒŒ์ผ๋Ÿฌ ํฌํ•จ)๊ทธ๋ƒฅ ์‹คํ–‰๋งŒ ํ•  ๋•Œ โ†’ JRE๋งŒ ์žˆ์–ด๋„ ๋จ์‹ค์ œ ์‹คํ–‰ ๋‹ด๋‹น โ†’ JVM ์œ„์—์„œ ๋Œ์•„๊ฐ...  JRE๋Š” ์‹คํ–‰์šฉ, JDK๋Š” ๊ฐœ๋ฐœ์šฉ์ด๋ผ๊ณ  ์ดํ•ดํ•˜๋ฉด ์‰ฝ๋‹ค. โ–  JDK (Java Development Kit)`.java` ํŒŒ์ผ์„ `.class(๋ฐ”์ดํŠธ์ฝ”๋“œ)`๋กœ ..
Swagger(Springdoc OpenAPI)์—์„œ ๋ถˆํ•„์š”ํ•œ ์ปฌ๋Ÿผ์ด ๋ณด์ด๋Š” ์ด์œ ๋Š”API ์‘๋‹ต์— DTO๋ฅผ ์จ์•ผ ํ•˜๋Š”๋ฐ Entity๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. โŒ ๋ฌธ์ œ@GetMapping("/users/{id}")public UserEntity getUser(@PathVariable Long id) { return userService.getUser(id);}UserEntity๋ฅผ ์ง์ ‘ ๋ฐ˜ํ™˜ํ•˜๋ฏ€๋กœ, Swagger์—์„œ ๋ชจ๋“  ํ•„๋“œ(password, phoneNumber ๋“ฑ)๊ฐ€ API ๋ฌธ์„œ์— ํฌํ•จ๋œ๋‹ค. โœ… ํ•ด๊ฒฐ๋ฒ•โ†’ Swagger์—์„œ ๋ถˆํ•„์š”ํ•œ ์ปฌ๋Ÿผ์ด ๋ณด์ด๋ฉด, Entity ๋Œ€์‹  DTO๋ฅผ ์‚ฌ์šฉํ•˜์ž@GetMapping("/users/{id}")public UserDto getUser(@PathVariable Lon..
1. DAO (Data Access Object)DAO๋Š” DB์™€ ์ง์ ‘ ํ†ต์‹ ์„ ํ•˜๋ฉด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ , ๊ฐ€์ ธ์˜ค๋Š” ๊ฐ์ฒด์ด๋‹ค.์‚ฌ์šฉ์ฒ˜ : `MyBatis` ํ˜น์€ `JPA`์™€ ๊ฐ™์€ ORM์—์„œ ์‹ค์ œ๋กœ DB ์ ‘๊ทผ์„ ๋‹ด๋‹นํ•˜๋Š” ๊ฐ์ฒดํŠน์ง•: ๋ณดํ†ต ์ธํ„ฐํŽ˜์ด์Šค + Mapper (XML or ์–ด๋…ธํ…Œ์ด์…˜ ๋ฐฉ์‹)์œผ๋กœ ๊ตฌ์„ฑ๋จ ์˜ˆ์ œ (MyBatis)import org.apache.ibatis.annotations.Mapper;import org.apache.ibatis.annotations.Insert;import org.apache.ibatis.annotations.Select;import org.apache.ibatis.annotations.Param;@Mapperpublic interface UserDAO { // ..
1. IPv6๊ฐ€ ๋“ฑ์žฅํ•œ ์ด์œ IPv4๋Š” ์—ฌ์ „ํžˆ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์ง€๋งŒ, ์ฃผ์†Œ ๋ถ€์กฑ๊ณผ ๋ณด์•ˆ ๋ฌธ์ œ๋กœ ์ธํ•ด ์ ์  IPv6๋กœ ์ „ํ™˜๋˜๊ณ  ์žˆ๋‹ค. IPv6๋Š” IPv4์˜ ์ฃผ์†Œ ๋ถ€์กฑ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ๋˜์—ˆ๋‹ค. IPv4๋Š” 32๋น„ํŠธ ์ฃผ์†Œ ์ฒด๊ณ„๋กœ ์•ฝ 43์–ต ๊ฐœ์˜ ์ฃผ์†Œ๋งŒ ์ œ๊ณตํ•˜์ง€๋งŒ, IPv6๋Š” 128๋น„ํŠธ ์ฃผ์†Œ ์ฒด๊ณ„๋ฅผ ์‚ฌ์šฉํ•ด ์‚ฌ์‹ค์ƒ ๋ฌด์ œํ•œ์— ๊ฐ€๊นŒ์šด ์ฃผ์†Œ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. โœ… ๋ณด์•ˆ ๋ฌธ์ œIPv4์—์„œ๋Š” ๋ณด์•ˆ ๊ธฐ๋Šฅ์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค(์„ ํƒ ์‚ฌํ•ญ). ๊ทธ๋ž˜์„œ IPSec(Internet Protocol Security) ๊ฐ™์€ ๋ณ„๋„์˜ ๋ณด์•ˆ ํ”„๋กœํ† ์ฝœ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค. ๋ฐ˜๋ฉด IPv6๋Š” IPSec์„ ๊ธฐ๋ณธ์ ์œผ๋กœ ํฌํ•จํ•˜๊ณ  ์žˆ์–ด์„œ, ๋„คํŠธ์›Œํฌ ๋ณด์•ˆ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค. ๋˜ ํ—ค๋” ๊ตฌ์กฐ์˜ ์ฐจ์ด๋„ ์žˆ๋‹ค IPv6๋Š” AH(Authenticat..
1. ์ž๋ฐ”์˜ ์ฃผ์„์ดˆ๋ณด ๊ฐœ๋ฐœ์ž๋“ค์€ // ํ•œ ์ค„ ์ฃผ์„์„ ๋‚จ๋ฐœํ•˜๋ฉฐ ํ•œ ์ค„ ํ•œ ์ค„์”ฉ ์ฃผ์„์„ ๋‹ค๋Š” ์Šต๊ด€์„ ๊ฐ€์ง„๋‹ค. ๋‚˜ ์—ญ์‹œ ์ฒ˜์Œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋ฐฐ์šธ ๋•Œ ๊ทธ๋Ÿฌํ–ˆ๋‹ค. ์กฐ๊ธˆ ์ฝ”๋”ฉ์„ ํ•ด ๋ณธ ์‚ฌ๋žŒ๋“ค์€ /* ... */์„ ์‚ฌ์šฉํ•ด ์—ฌ๋Ÿฌ ์ค„์„ ํ•œ๊บผ๋ฒˆ์— ์ฃผ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ง„์งœ ๊ณ ์ˆ˜๋“ค์€ /** ... */ Javadoc ์ฃผ์„์„ ํ™œ์šฉํ•œ๋‹ค. ์ด ์ฃผ์„์€ ํ•จ์ˆ˜, ํด๋ž˜์Šค, ๋ฉ”์„œ๋“œ ๋“ฑ์˜ ์„ค๋ช…์„ ํฌํ•จํ•˜์—ฌ ์ž๋™์œผ๋กœ ๋ฌธ์„œ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค. ์˜ค๋Š˜์€ ์ด ์„ธ ๊ฐ€์ง€ ์ฃผ์„์˜ ์ฐจ์ด์ ๊ณผ ํ•จ๊ป˜, ์ž๋ฐ”์—์„œ ์ฃผ์„์„ ๋น ๋ฅด๊ฒŒ ๋‹ค๋ฃจ๋Š” ๋‹จ์ถ•ํ‚ค๋ฅผ ์•Œ์•„๋ณด๊ฒ ๋‹ค. 2. ๋‹จ์ถ•ํ‚ค์ž๋ฐ”์—์„œ ์ฃผ์„์„ ๋น ๋ฅด๊ฒŒ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•˜๋Š” ๋‹จ์ถ•ํ‚ค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 2-1. ํ•œ ์ค„ ์ฃผ์„ (//) ๋‹จ์ถ•ํ‚คCtrl + / (Cmd + / on macOS)์—ฌ๋Ÿฌ ์ค„์„ ์„ ํƒํ•œ ํ›„ Ctrl + /๋ฅผ ..
์„œ๋ฒ„ ์ด์ค‘ํ™”์™€ ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ๋Š” ๊ณ ๊ฐ€์šฉ์„ฑ๊ณผ ์•ˆ์ •์„ฑ์„ ํ™•๋ณดํ•˜๊ธฐ ์œ„ํ•ด ํ•„์ˆ˜์ ์ด๋‹ค. ๋‹จ์ผ ์„œ๋ฒ„๋กœ๋Š” ๋Œ€๋Ÿ‰์˜ ํŠธ๋ž˜ํ”ฝ๊ณผ ์žฅ์•  ๋ฐœ์ƒ ์‹œ ๋ณต๊ตฌ๋ฅผ ๊ฐ๋‹นํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์—, ๋‹ค์ˆ˜์˜ ์„œ๋ฒ„๋กœ ๋ถ€ํ•˜๋ฅผ ๋ถ„์‚ฐํ•˜๊ณ  ๋ฐฑ์—… ์‹œ์Šคํ…œ์„ ๋งˆ๋ จํ•ด์•ผ ํ•œ๋‹ค. ํŠนํžˆ, ์ด์ปค๋จธ์Šค๋‚˜ ๊ธˆ์œต ์„œ๋น„์Šค์ฒ˜๋Ÿผ ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ๊ฐ€ ์ค‘์š”ํ•œ ํ™˜๊ฒฝ์—์„œ๋Š” ์ž๋™ ํ™•์žฅ(Auto Scaling)๊ณผ ๋ฌด์ค‘๋‹จ ์šด์˜์ด ํ•„์ˆ˜์ ์ด๋‹ค.1. ์„œ๋ฒ„ ์ด์ค‘ํ™” (Server Redundancy)์„œ๋ฒ„ ์ด์ค‘ํ™”๋Š” ์žฅ์•  ๋Œ€๋น„(High Availability, HA - ๊ณ ๊ฐ€์šฉ์„ฑ)๋ฅผ ์œ„ํ•œ ๊ฐœ๋…์ด๋‹ค.ํ•˜๋‚˜์˜ ์„œ๋ฒ„๊ฐ€ ๋‹ค์šด๋˜๋”๋ผ๋„ ๋‹ค๋ฅธ ์„œ๋ฒ„๊ฐ€ ๋Œ€์‹  ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฐฑ์—… ์„œ๋ฒ„๋ฅผ ์ค€๋น„ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.  โœ”๏ธ ์˜ˆ๋ฅผ ๋“ค๋ฉด?DB ์„œ๋ฒ„ ์ด์ค‘ํ™”: Master-Slave ๊ตฌ์กฐ์›น ์„œ๋ฒ„ ์ด์ค‘ํ™”: ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ + ๋‘ ๊ฐœ์˜ ๋™์ผํ•œ ์›น ์„œ๋ฒ„ โœ”..
Java ํ”„๋กœ์ ํŠธ๋ฅผ ์„ค์ •ํ•  ๋•Œ ํ”„๋กœ์ ํŠธ ์šฐํด๋ฆญํ•˜๋ฉด Build Path๊ฐ€ ๋‚˜์˜จ๋‹ค. ์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๊ฐ€ Oracle JDBC ๋“œ๋ผ์ด๋ฒ„(ojdbc8.jar) ๊ฐ™์€ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ MySQL Connection(mysql-connector-java.jar)์ด๋ผ๋“ ์ง€ Getter์™€ Setter์„ ์ž๋™์ƒ์„ฑํ•˜๋Š” Lombok(lombok.jar) ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋“ฑ๋ก ํ•ด ๋ณธ ์ ์ด ์žˆ์„ ๊ฒƒ์ด๋‹ค.  ํ•„์ž๋Š” ํ•ญ์ƒ ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ์ถ”๊ฐ€ํ• ๋•Œ Classpath, Module Path ์ค‘ ์–ด๋””์— ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋Š”์ง€ ํ—ท๊ฐˆ๋ ธ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๊ธ€์„ ์ž‘์„ฑํ•œ๋‹ค. Buildpath๋Š” ์ž๋ฐ”์—์„œ ์ค‘์š”ํ•œ ๊ฐœ๋…์ด๋ฉฐ, ์–ด๋–ค ๊ฒƒ์„ ๋“ฑ๋กํ•ด์•ผ ํ•˜๋Š”์ง€๋Š” ํ”„๋กœ์ ํŠธ ํ™˜๊ฒฝ๊ณผ ์‚ฌ์šฉ ๊ธฐ์ˆ ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง„๋‹ค. ์ด๋ก ์ ์ธ ์„ค๋ช…์€ ๊ฑด๋„ˆ  ๋›ฐ๊ณ  ์–ธ์ œ ModulePath..
ยท AWS
EBS vs EFS1. EBS(Elastic Block Storage)โ–ถEBS volumesOne instance (except multi-attach io1 / io2) - ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค๋งŒ ์—ฐ๊ฒฐare locked at the Availability Zone (AZ) levelgp2: IO increases if the disk size increasesgp3 & io 1: can increase IO independentlyโ–ถTo migrate an EBS volume across AZTake a snapshotRestore the snapshot to another AZEBS backups use IO and you shouldn't run them while your application..
์ƒ๋‹จ์œผ๋กœ