0816 - 0822
# 0816 - 0822
# 0816 - Redis๋?
# NOSql์ด๋?
๋น๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค, ํค-๋ฒจ๋ฅ๋ ์ปฌ๋ผ, ๋ฌธ์ ํ์์ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ์ด์ฉ.
Not Only Sql, ๋น๊ด๊ณํ ๋ฐ์ดํฐ ๋ฒ ์ด์ค
์์ฃผ ๋ง์ ์์ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌ, ๋ฐ์ดํฐ ๋ถ์ฐ์ฒ๋ฆฌ, ๋น ๋ฅธ์ฐ๊ธฐ ๋ฐ ๋ฐ์ดํฐ์ ์์ ์ฑ ์ด ํ์ํ ๋ ์ฌ์ฉ
# ๋ ๋์ค(Redis)๋?
REDIS(REmote Dictionary Server)๋ ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ์ "ํค-๊ฐ" ๊ตฌ์กฐ ๋ฐ์ดํฐ ๊ด๋ฆฌ ์์คํ ์ด๋ฉฐ, ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๊ณ ์กฐํํ๊ธฐ์ ๋น ๋ฅธ Read, Write ์๋๋ฅผ ๋ณด์ฅํ๋ ๋น ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๋ค.
- ๋ฐ์ด์ค๋ ํฌ๊ฒ 5๊ฐ์ง
String, Set, Sorted Set, Hash, List
์ ๋ฐ์ดํฐ ํ์์ ์ง์ํ๋ค. - Redis๋ ๋น ๋ฅธ ์คํ ์์ค์ธ ๋ฉ๋ชจ๋ฆฌ ํค-๊ฐ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์คํ ์ด์ด๋ฉฐ, ๋ค์ํ ์ธ ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์งํฉ์ ์ ๊ณตํ๋ฏ๋ก ์ฌ์ฉ์ ์ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฝ๊ฒ ์์ฑํ ์ ์๋ค.
- ์๋น์ค์ ํน์ฑ์ด๋ ์ํฉ์๋ฐ๋ผ
์บ์
๋๋Persistence Data Storage
๋ก ์ฌ์ฉํ ์ ์๋ค.
# 0818 - ์๋ฒ๋ฆฌ์ค์ ์ปจํ ์ด๋
์๋ฒ๋ฆฌ์ค(serverless)๋ ๊ฐ๋ฐ์๊ฐ ์๋ฒ๋ฅผ ๊ด๋ฆฌํ ํ์ ์์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น๋ํ๊ณ ์คํํ ์ ์๋๋ก ํ๋ ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ๊ฐ๋ฐ ๋ชจ๋ธ์ด๋ค.
์๋ฒ๋ฆฌ์ค ๋ชจ๋ธ์๋ ์๋ฒ๊ฐ ์กด์ฌํ๊ธด ํ์ง๋ง, ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์์์ ๋ฌ๋ฆฌ ์ถ์ํ๋์ด ์๋ค. ํด๋ผ์ฐ๋ ์ ๊ณต์ ์ฒด๊ฐ ์๋ฒ ์ธํ๋ผ์ ๋ํ ํ๋ก๋น์ ๋, ์ ์ง ๊ด๋ฆฌ, ์ค์ผ์ผ๋ง ๋ฑ์ ์ผ์์ ์ธ ์์ ์ ์ฒ๋ฆฌํ๋ฉฐ, ๊ฐ๋ฐ์๋ ๋ฐฐํฌ๋ฅผ ์ํด ์ฝ๋๋ฅผ ์ปจํ ์ด๋์ ํจํค์งํ๊ธฐ๋ง ํ๋ฉด ๋๋ค.
์๋ฒ๋ฆฌ์ค ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌ๋๊ณ ๋๋ฉด ํ์์ ๋ฐ๋ผ ์๋์ผ๋ก ์ค์ผ์ผ ์ ๋๊ฑฐ๋ ์ค์ผ์ผ ๋ค์ด์ผ๋ค. ํผ๋ธ๋ฆญ ํด๋ผ์ฐ๋ ์ ๊ณต์ ์ฒด์ ์๋ฒ๋ฆฌ์ค ์คํผ๋ง์ ์ผ๋ฐ์ ์ผ๋ก ์ด๋ฒคํธ ๊ธฐ๋ฐ ์คํ ๋ชจ๋ธ์ ํตํด ์จ๋๋งจ๋๋ก ๋ฏธํฐ๋ง๋ฉ๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์๋ฒ๋ฆฌ์ค ๊ธฐ๋ฅ์ด ์ ํด ์ํ์ผ ๋๋ ์๋ฌด๋ฐ ๋น์ฉ๋ ๋ค์ง ์์ต๋๋ค.
# ์ปจํ ์ด๋
์ปจํ ์ด๋๋ ์ด๋ค ํ๊ฒฝ์์๋ ์คํํ๊ธฐ ์ํด ํ์ํ ๋ชจ๋ ์์๋ฅผ ํฌํจํ๋ ์ํํธ์จ์ด ํจํค์ง์ด๋ค. ์ปจํ ์ด๋๋ ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ์ด์์ฒด์ ๋ฅผ ๊ฐ์ํํ๋ฉฐ ํ๋ผ์ด๋น ๋ฐ์ดํฐ ์ผํฐ์์ ํผ๋ธ๋ฆญ ํด๋ผ์ฐ๋ ๋๋ ๊ฐ๋ฐ์์ ๊ฐ์ธ ๋ ธํธ๋ถ์ ์ด๋ฅด๊ธฐ๊น์ง ์ด๋์๋ ์คํ๋๋ค.
์ปจํ ์ด๋๋ ์ํํธ์จ์ด ์๋น์ค๋ฅผ ์คํํ๋ ๋ฐ ํ์ํ ํน์ ๋ฒ๋ฒ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ๋ฐํ์ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฐ์ ์ข ์ ํญ๋ชฉ๊ณผ ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋๋ฅผ ํจ๊ป ํฌํจํ๋ ๊ฒฝ๋ ํจํค์ง
์ปจํ ์ด๋๋ ์ด์์ฒด์ ์์ค์์ CPU, ๋ฉ๋ชจ๋ฆฌ, ์คํ ๋ฆฌ์ง, ๋คํธ์ํฌ ๋ฆฌ์์ค๋ฅผ ์ฝ๊ฒ ๊ณต์ ํ ์ ์๊ฒ ํด์ฃผ๋ฉฐ ์ปจํ ์ด๋๊ฐ ์ค์ ๋ก ์คํ๋๋ ํ๊ฒฝ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ถ์ํํ ์ ์๋ ๋ ผ๋ฆฌ ํจํค์ง ๋ฉ์ปค๋์ฆ์ ์ ๊ณต
# ์ปจํ ์ด๋ ์ฅ์
- ์ฑ
์๋ถ๋ฆฌ
- ๊ฐ๋ฐ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ก์ง๊ณผ ์ข ์ ํญ๋ชฉ์ ์ง์ค, IT ์ด์ํ์ ํน์ ์ํํธ์จ์ด ๋ฒ์ ๋ฐ ๊ตฌ์ฑ๊ณผ ๊ฐ์ ์ธ๋ถ ์์ ๋์ ๋ฐฐํฌ ๋ฐ ๊ด๋ฆฌ์ ์ง์ค
- ์ํฌ๋ก๋ ์ด๋์ฑ
- ์ปจํ ์ด๋๋ ์ด์์ฒด์ ๋ฅผ ๊ฐ๋ฆฌ์ง ์๊ณ , ๊ฐ์๋จธ์ , ๋ฌผ๋ฆฌ์ ์๋ฒ, ๊ฐ๋ฐ์ ์ปดํจํฐ, ๋ฐ์ดํฐ ์ผํฐ, ์จํ๋ ๋ฏธ์ค ํ๊ฒฝ, ํผ๋ธ๋ฆญ ํด๋ผ์ฐ๋ ๋ฑ ์ฌ์ค์ ์ด๋ ํ๊ฒฝ์์๋ ๊ตฌ๋๋๋ฏ๋ก ๊ฐ๋ฐ ๋ฐ ๋ฐฐํฌ๊ฐ ํธ๋ฆฌ
- ์ ํ๋ฆฌ์ผ์ด์
๊ฒฉ๋ฆฌ
- ์ปจํ ์ด๋๋ ์ด์์ฒด์ ์์ค์์ CPU, ๋ฉ๋ชจ๋ฆฌ, ์คํ ๋ฆฌ์ง, ๋คํธ์ํฌ ๋ฆฌ์์ค๋ฅผ ๊ฐ์ํํ๋ฏ๋ก ๊ฐ๋ฐ์์๊ฒ ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก๋ถํฐ ๋ ผ๋ฆฌ์ ์ผ๋ก ๊ฒฉ๋ฆฌ๋ OS ํ๊ฒฝ์ ์ ๊ณต
# ์ปจํ ์ด๋์ VM์ ์ฐจ์ด
- ์ปจํ ์ด๋๋ VM๋ณด๋ค ํจ์ฌ ๋ ๊ฒฝ๋.
- ์ปจํ ์ด๋๋ OS ์์ค์์ ๊ฐ์ํ๋๊ณ VM์ ํ๋์จ์ด ์์ค์์ ๊ฐ์ํ๋๋ค.
- ์ปจํ ์ด๋๋ OS ์ปค๋์ ๊ณต์ ํ๋ฉฐ VM์ ํ์ํ ๊ฒ๋ณด๋ค ํจ์ฌ ์ ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉ.
# 0819 - ๋ค์์ธ, ์ฝ๋์ค๊ณ์ ์ค์์ฑ
# ๋์์ธ์ด ์ ์ค์ํ๊ฐ?
์์ฆ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์์๋ ๊ฐ์ฒด๊ฐ์ ๋ณต์กํ ๊ด๊ณ, ๊ณ์ธตํ ๋์ง ์์ ๊ตฌ์กฐ ๋ฑ ๋ชจ๋ํ๊ฐ ์ ํ ์์ด๋ ๊ฐ๋ฐ์์ ๋จธ๋ฆฌ์์ ๋ชจ๋ ๊ฒ๋ค์ ๋ด์๋๊ณ ๊ฐ๋ฐ์ ํ ์ ์๋ค.
=> ํ์ง๋ง ํน์ ๋๊ตฐ๊ฐ๋ง ์๋์ ์๊ณ , ๊ทธ ์ฌ๋์ ๋จธ๋ฆฌ์์๋ง ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์กฐ๊ฐ ๋ด๊ฒจ์ ธ ์๋ค๋ฉด ์ ์ข์ ๋์์ธ์ ์ ํธ
์๋น์ค๊ฐ ์ฑ๊ณต์ ํ๋ฉด ๋ฌด์กฐ๊ฑด ์๋ก์ด ๊ธฐ๋ฅ์ ์๊ตฌ๋ฐ๋๋ฐ ์ด๋, ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
# ๊ฐ์ฒด์งํฅ ๋์์ธ
์๋ฐ๋ฅผ ๋น๋กฏํ OOP ์ธ์ด๋ค์ ๋ฐ์ดํฐ(Data)์ ํ์(Method)๋ฅผ ๊ฐ์ฒด์์ ํตํฉ์์ผ๋๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ค ๊ฐ ๊ฐ์ฒด๋ค์ ์ํธ์์ฉ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ด๋ฃจ์ด์ ธ์๋๋ฐ, ์ด ์ํธ์์ฉ์ ์๋ก ์ฃผ๊ณ ๋ฐ๋ ๋ฉ์ธ์ง ์์์๋ค. ์ฆ, ๊ฐ์ฒด๋ ๋ฉ์ธ์ง๋ฅผ ํตํด ์๋ ๊ฐ์ฒด์ ํ๋์ ์คํ์ํจ๋ค.
๋ฐ๋ผ์ ์๋ก๊ฐ์ ํ๋์ ์คํ์ํค๊ธฐ ์ํด์๋ ํ๋ ฅ ๊ฐ์ฒด์ ๋ํ ์ด๋ ์ ๋์ ์ดํด๋๊ฐ ํ์ํ๋ฐ, ์ด ์ดํด๋๊ฐ ์ด๋์ ๋ ๋๋๋์ ๋ฐ๋ผ ์ข์ ๊ฐ์ฒด์งํฅ ๋์์ธ์ด ๋ ์๋ ์๊ณ , ์ข์ง ๋ชปํ ๊ฐ์ฒด์งํฅ ๋์์ธ์ด ๋ ์ ์๋ค.
๋ฐ๋ผ์ ๊ฐ์ฒด์งํฅ ๋์์ธ์ ํ๋ค๊ณ ํ๋ฉด, ์ด ๊ฐ์ฒด๊ฐ ์ด๋ค ํ๋์ ํ ์ง ์์ํ ์ ์๋๋ก ์ฝ๋๋ฅผ ๋ฐฐ์นํด์ผ๋งํ๋ค.
# ์ข์ ๋์์ธ
๊ฒฐ๊ตญ ๋ณํ์ ๋์ํ๊ธฐ ์ํด ์ด๋ป๊ฒ ์ฝ๋๋ฅผ ๋ฐฐ์นํ ๊น๋ฅผ ๊ณ ๋ฏผํด์ผ ํ๋ค.
์ ๋ฆฌํ๋ฉด ์ข์ ๋์์ธ์ด๋ ๋ณํ๋ฅผ ์์ฝ๊ฒ ๋ฐ์๋ค์ผ ์ ์๋๋ก ์ฝ๋๋ฅผ ๋ฐฐ์นํ๋ ์ผ์ด ๋๋ค.
# 0821 - Junit5 ํ ์คํธ ์์
# @TestMethodOrder
@TestMethodOrder๊ฐ ์ ์ธ๋์ด ์์ง ์๋ค๋ฉด ๊ธฐ๋ณธ ์๊ณ ๋ฆฌ์ฆ์ ์ํด ์์๊ฐ ์ ํด์ง์ง๋ง ์๋ ๊ฒฝ์ฐ๋ ์๋ค. ๋ฐ๋ผ์ ํ ์คํธ๋ค์ ์คํ ์์๊ฐ ๋ฐ๋์ ํ์ํ๋ค๋ฉด @TestMethodOrder(value = PER CLASS)๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
- ํ๋ผ๋ฏธํฐ๋ช
- value
- ํ์
- Class<? extends MethodOrderer>
- ์ค๋ช
- ์ ๋ ฌ ํ์
- MethodName : ๋ฉ์๋๋ช
- DisplayName : @DisplayName ๋ช
- OrderAnnotation : @Order(n)
- Random : ๋๋ค
- ์ ๋ ฌ ํ์
# 0822 - ๋น๋์ ํ๋ก์ ํธ ๋ด์์ JDK๋ฒ์ ๋ณ๊ฒฝ
# ๋ฐ์์ํฉ
- local jdk : 8
- project jdk : 11
์ํฉ์์ build ์คํจ
=> 11๋ฒ์ ์ ํ๋ฆฌ์ผ์ด์ ๋น๋ ์์๋ Maven์ด 1.8๋ฒ์ ์ JDK๋ก ์ฌ์ฉ
# ํด๊ฒฐ
# Maven ํ๋ก์ ํธ
<build>
<plugins>
...
<!-- maven-compiler-plugin ์ค์ ์ถ๊ฐ -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<fork>true</fork>
<!-- ์ฌ์ฉํ๊ณ ์ ํ๋ JDK์ javac ๊ฒฝ๋ก๋ฅผ ์ง์ ํด์ค๋ค. -->
<executable>C:\Program Files\AdoptOpenJDK\jdk-11.0.3.7-hotspot\bin\javac</executable>
<compilerVersion>${java.version}</compilerVersion>
</configuration>
</plugin>
...
</plugins>
</build>
- Apache Maven ์น์ฌ์ดํธ์ ์๋ ์์ ๋ฅผ ๋ฐ๋ผ
pom.xml
์ Maven compiler plugin ์ค์ ์ถ๊ฐ
<!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-surefire-plugin -->
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
</dependency>
<!-- maven-surefire-plugin ์ถ๊ฐ -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<!-- ์ฌ์ฉํ๊ณ ์ ํ๋ JDK์ java ๊ฒฝ๋ก -->
<configuration>
<jvm>C:\Program Files\AdoptOpenJDK\jdk-11.0.3.7-hotspot\bin\java</jvm>
</configuration>
</plugin>
- Maven Surefire plugin ์์กด์ฑ๊ณผ ํ๋ก๊ทธ์ธ์ ์ถ๊ฐ
- ํ ์คํธ ์ฝ๋๊ฐ ์๋ ๊ฒฝ์ฐ ๋น๋ ์ ํ ์คํธ ์์ ๋ฌธ์ ๋ฐ์๋๋ฌธ์ ์ถ๊ฐ