๋ฐ๋ฐ๋ฅ๋ถํฐ ์์ํ๋ ์ผํ ๋ฐ์ดํฐ ์์ง๋์ด๋ง ๊ณ ๊ตฐ ๋ถํฌ๊ธฐ
์ ์ํ๋
์๋น์ค ์ด๊ธฐ ๋ฐ์นญ ์ํฉ์?
- ๋จ์ผ Application
- ๋จ์ผ DB ๊ตฌ์กฐ
๊ธฐ์กด์๋ ๋ฌธ์ ๋์ง ์์๋ ๋ฌธ์ ๋ฐ์
-
๋จ์ผ DB ๊ตฌ์กฐ๋ก DB๊ฐ ์ ์ ๋๋ ค์ง๋ ์ํฉ์ด ๋ฐ์
- ๋๋ฉ์ธ ๋ณ๋ก DB ๋ถ๋ฆฌํ๊ฑฐ๋
- DB ์ค๋๋ก ๋ฌธ์ ํด๊ฒฐ
- ๋ถํ์ํ ๋ฐ์ดํฐ ์ ๊ฑฐ / ์์ธ ์ถ๊ฐ
-
DB ์กฐ์ธ ์ฟผ๋ฆฌ๋ฅผ ์ ๊ฑฐํ๊ธฐ ์ํด์..
- ๋ง์ ๊ฒ์๋ค์ โ ES ๊ฒ์์ผ๋ก ํ์ํ ID๋ง ์กฐํ
- DB๋ ID ๊ธฐ๋ฐ์ผ๋ก Select๋ง ์กฐํ
- ๋คํธ์ํฌ ๋น์ฉ ์ด์ ๋ฎ์ถค
-
๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ ๊ตฌ์กฐ
- ์ ์ฒด ๋ณต๊ตฌ
- ๋ฐฐ์น ์ฒ๋ฆฌ
- ES
- ์ค์๊ฐ ์ฒ๋ฆฌ
ES ์์ธ์ ์ด๋ป๊ฒ ๋ง๋ค๊น?
- ๊ฒ์ ๋์๋ง ์์ธ์ ํ๊ณ ๋๋จธ์ง๋ ์์ธํ์ง ์์
- ๊ฒ์์ ์ต์ ํ๋ ์คํ ๋ฆฌ์ง
- DB๋ฅผ ๋ถ๋ฆฌํจ์ผ๋ก์จ ๊ฐ ์ญํ ์ ๋ถ๋ฆฌ
์ด๋ป๊ฒ ETL์ฒ๋ฆฌ๋ฅผ ํด์ผํ ๊น์?
- ์์ธ ๋์ ๊ธฐ์กด ๋ฐ์ดํฐ ๊ตฌ์กฐ ๊ฒํ
modified_at
ํ๋๋ฅผ ๋ฐ๋ผ๋ณด๊ณ ES์ ์์ธ- ์๋์ผ๋ก ์
๋ฐ์ดํธํ๋ ๊ฒฝ์ฐ
modified_at
์ด null์ธ ์ํฉ์ด ๋ฐ์ - ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๊ณ ๋ฏผ ํ์..
์ด๋ป๊ฒ ETL์ ํด๊ฒฐํ ๊น?
๋ฐฐ์น ์ฒ๋ฆฌ๋ฅผ ํตํ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ๊ฐ์ง ์๋ฃจ์
- CDC(Change Data Capture)๋
- ๋ค์ํ ๊ธฐ์ ์คํ์ ์ด์ ๋ ธํ์ฐ๊ฐ ํ์
- ํ ์ด๋ธ ์คํค๋ง์ ๋ํ ๋ณ๊ฒฝ ์ ์ฝ
- master / slave ๋ณ๊ฒฝ ์ bin log ํธ๋ค๋ง ์ด์
- ๋์ ๊ธฐ์ ์คํ
DB์ ์ฆ๋ถ ํ๋๋ฅผ pull ํ๋ ๋ฐฉ์
- ๋ ๊ฐํธํ ๋ฐฉ๋ฒ์ผ๋ก ์ ํ
- Table ์คํค๋ง์ ์ถ๊ฐํ์ฌ Default๋ก ์ฝ์ ํ๋ ๊ณผ์
์ค์๊ฐ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์ฒ๋ฆฌ๋ฅผ ์ํด Kafka๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ์
- ํํฐ์
์ด ๋ถ๋ฐฐ๋๋ ์ํฉ
- ํํฐ์ ๋ง๋ค ์ฑ๋ฅ์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์ด๋ ํํฐ์ ์ด ๋นจ๋ฆฌ ๋๋๋์ง ๋ชจ๋ฆ
- ์ด๋ฒคํธ ์์ ๋ณด์ฅ์ด ํ์
- ์์๊ฐ ๋ณด์ฅ๋๋๋ผ๋..
- ์นดํ์นด์ ์ ์ฌ๋ ์ด๋ฒคํธ๋ฅผ replayํ๋ฉด์ ETL์ฒ๋ฆฌ ํ๋ฉด
- ์๊ฐ์ ์ผ๋ก ๊ณผ๊ฑฐ ์ํ๋ก ํ๊ทํ๋ ์ด์ ๋ฐ์
- ์์ฉ์์ ์์ธ์ ํ์ํ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ฑ์์ผ ํ๋ ๋ถ๋ด ๋ฐ์
- ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋?
- kafka๋ฅผ ํตํด id๋ง ์ ๋ฌ๋ฐ๊ณ
- id๋ฅผ ํตํด DB๋ก ์กฐํ
๋ฐ์ดํฐ ์ฒ๋ฆฌ 3๊ฐ์ง ๊ตฌํ ๋ฐฉ๋ฒ
- ๋ฐ์ดํฐ ์ฒ๋ฆฌ ํ์ดํ๋ผ์ธ ๊ตฌ์กฐ
Spark Recovery
- ์ ์ฒด ์์ธ ๋ณต๊ตฌ
- ๋ฐ์ดํฐ์ min ID max ID๋ฅผ ์ถ์ถํ์ฌ batch size๋งํผ iterationํ๋ค.
- ID ์ญ์์ผ๋ก Batch๋ฅผ ์งํ
- ์ต์ ๋ฐ์ดํฐ๋ถํฐ ์ ๋ฐ์ดํธ
- ์ ๋ ์ง๋ก ์ํ๊ณ ID ๊ธฐ์ค์ผ๋ก ํ์
จ๋์?
- ๋ฐ์ดํฐ ๋ง์ด๊ทธ๋ ์ด์ ์ด ๋ฐ์ํ๋ฉด
- ํ๋ฃจ์ ๋ง์ ๋ฐ์ดํฐ๊ฐ ๋ฐ์ํ๋ ์ด์..
- ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ID ๊ธฐ์ค์ผ๋ก ์งํ
Spark batch
- 5๋ถ ๋ฐฐ์น
- Tumbling
- window๋ก ์งํ
- Session
- ๋๋ฝ ๋ฐ์
- Hopping
- ์๊ฐ์ ๊ฒน์น๋ ๋ฐฉ์
- ์ฌ๋ฆฌ์ ์์ ๊ฐ
- ๋ฐฐ์น ํ์คํ ๋ฆฌ๋ฅผ ๊ธฐ๋กํ์ฌ ๋ง์ง๋ง ๋ฐฐ์น ์๋ฃ ์์ ๊ธฐ์ค์ผ๋ก ID ๋ชฉ๋ก์ ๊ฐ์ ธ์์ ์์ธํ๋ค
Spark Streaming
- Kafka๋ฅผ ํตํ ์ด๋ฒคํธ ์ค์๊ฐ ์ฒ๋ฆฌ
๋ฐ์ดํฐ ํ์ง์ ์ ์งํ๊ธฐ ์ํ ๋ ธ๋ ฅ
-
๋ก์ปฌ ํ๊ฒฝ์์ Docker ์ฌ์ฉ
-
ํ ์คํธ ์ํฉ ๋ง๋ค๊ธฐ
- DB Fixture ๋ฐ์ดํฐ ์์ฑ
- Join Service ํธ์ถ
- ES Join ์ฟผ๋ฆฌ ์์ฑ
- ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ ๊ฒ์ฆ
- Docker Compose๋ก ํ๊ฒฝ ๊ตฌ์ฑ
- ES ๋งตํ ์ ์ ์ผ๋ก ์์ฑ
-
์๋ฒฝ์ ๋ง ํธํ ์ ์ ์๋ ์ด์ ๋ ธํ์ฐ
- ES alias ์ฌ์ฉ
- ์๋น์ค์์๋ alias๋ง ๋ฐ๋ผ๋ณด๋๋ก ์ค๊ณํ๋ค.
- ์ด์ํ๊ฒฝ์ ์๋๋ณต๊ตฌ
- Spark Streaming job ์คํ ์ zookeeper์ ์คํ ์ ๋ณด ๋ฑ๋ก
- Zookeeper ephemeral node๋ก Spark job ๋ชจ๋ํฐ๋ง
- Zookeeper์ ๋ฑ๋ก๋์ง ์๋ spark job ์๋ ๋ณต๊ตฌ
- ES alias ์ฌ์ฉ
์์ฝํ์๋ฉด?
- DB ๋ณ๊ฒฝ์ฌํญ์ update_ts ํ๋๋ฅผ ์ฌ์ฉ
- ์์์ ์๊ด์์ด ์ต์ข ์ ์ผ๊ด์ฑ์ ์ ์งํ๋ ID ๊ธฐ๋ฐ์ ๊ตฌ์กฐ
- ๋ฐ์ดํฐ ์ค์๊ฐ / ๋ฐฐ์น / ๋ณต๊ตฌ ์ ๋ต
- ์นดํ์นด๋ฅผ ํตํ ์ด๋ฒคํธ ์ค์๊ฐ ์ฒ๋ฆฌ
- hopping ๋ฐฉ์์ผ๋ก ํน์ ์๊ฐ์ ๋ณ๊ฒฝ์ ์บ์นํ์ฌ ๋ฐ์ดํฐ ๋ณด์ ๋ฐฐ์น
- ID ๊ธฐ๋ฐ์ ํํฐ์ ๋ ๋ณต๊ตฌ ์ฒ๋ฆฌ
- ํ ์คํธ ํ๊ฒฝ ๊ตฌ์ถ
- ์ด์ํ๊ฒฝ์ ์๋๋ณต๊ตฌ
Reference
- https://databricks.com/blog/2017/05/08/event-time-aggregation-watermarking-apache-sparks-structured-streaming.html
- Elasticsearch์ ์์ธ ๋ณ๋ช ํ์ฉ ํ - ๋ฆฌ๋์ฃผ์ํ์ฌ RIDI Corporation
- Apache Spark Streaming - ๋ณ์ฑ์ค๋
์นด์นด์ค์์๋ ์ด๋ป๊ฒ OpenJDK๋ฅผ ํ์ฉํ๊ณ ์์๊น?
์ก๊ทผ์ฑ๋, ์ ๋ณํฌ๋
์ OpenJDK๋ฅผ ์ฌ์ฉํด์ผ ํ ๊น?
- Oracle์ Java SE ์ง์ ์ ์ฑ ๋ณ๊ฒฝ
- LTS
- ์ผ๋ฐ ๋ฒ์ ผ๋ณด๋ค ๊ธด ์๊ฐ ๋์ ํจ์น release๋ฅผ ์ง์ํจ์ ์๋ฏธํจ
- 2019๋ 4์ ์ดํ์ ๋ฐํ๋๋ Oracle Java๋ ์ ๋ฃ ๋ผ์ด์ผ์ค๊ฐ ํ์ํ ์ํฉ์ด๋ค.
- OpenJDK๋ก ์ ํ
- Oracle์์ OpenJDK๋ก ์ง์ ์ ๋ต ๋ณ๊ฒฝ
- Oracle ์ง์
- 6๊ฐ์ ์ดํ ์ง์ ๋ถํฌ๋ช
- Major ๋ฒ์ ๋ง๋ค 6๊ฐ์ ๋์ ๊ธฐ์ฌ ๋ฐ ๋น๋ / ํธํ์ฑ ๊ด์ฌ
- Oracle์ Open JDK Code ์ฌ์ฉํด์ ๋ฐฐํฌ
- ๊ธฐ์ ์ฉ ์ํฐํ๋ผ์ด์ฆ ํ๊ฒฝ์ ์ํ LTS ๋ฐฐํฌํ ์ ๊ณต
OpenJDK ์ฑ๋ฅ ์ฐจ์ด๋ ์์๊น?
- ํ
์คํธ ํ๊ฒฝ
- CPU 8 Core
- ๋ฉ๋ชจ๋ฆฌ 32Gb
- CentOS 7.5
- Heap 8GB / G1GC
- oracle 8u181 / openjdk 8u181
- spring 5.1 / embeded tomcat
- test์๊ฐ 6์๊ฐ
- ํ
์คํธ ๊ฒฐ๋ก
- ์๋ฏธ์๋ ์ฑ๋ฅ ์ฐจ์ด๋ ์๋ค.
์ด๋ค OpenJDK๋ฅผ ์ฌ์ฉํ ๊น?
- OpenJDK.java.net์์ ์ ๊ณตํ๋ build ๋ฐฐํฌํ์ ์ฌ์ฉ.
- 6๊ฐ์ ์ดํ์ ์ง์์ด ๋ถํฌ๋ช ํ ๋ถ๋ถ.
- LTS ๋ฏธ์ง์
- OpenJDK Source Code๋ฅผ ์ง์ ์ฌ๋ด์์ buildํ์ฌ ์ฌ์ฉ
- ๊ธฐ์กด Java ํธํ์ฑ Test ์ํ
- ์ฑ๋ฅ ํ ์คํธ
- ์ ๋ด์ธ๋ ฅ
OpenJDK๋ง๊ณ ๋ค๋ฅธ ๋์์ ์์๊น?
- Amazon Corretto
- Redhat OpenJDK
- AdoptOpenJDK
- Zulu
- Community ๋ฒ์ ผ์ ๋ผ์ด์ผ์ค๊ฐ ์๋ค.
- ํน์ ๋์ค์ ๋ฐ๋ ๊ฐ๋ฅ์ฑ
์์ ๋ฒค๋๋ฅผ ์ค ํ๋๋ง ์ฌ์ฉํด๋ณด์.
- OracleJDK์์ ํธํ์ฑ ๋ณด์ฅ
- ์ง์ ํ๋ซํผ์ ๋ค์์ฑ
- LTS ๋ฌด์ ์ง์
- Update ๋ฐฐํฌ์ ์ ์์ฑ
- ๋ฌด๋ฃ ๋ผ์ด์ผ์ค ์ ๋ขฐ
- ๊ฒฐ๋ก ์?
- AdoptOpenJDK๋ฅผ ์ฌ์ฉํ๋ค.
AdoptOpenJDK
์ด๋ค ๋์์ผ๋ก ์ด๋ป๊ฒ ๋ณ๊ฒฝํด์ผํ ๊น?
- Java SE 6 / 7์ ์ง์ํ์ง ์๋๋ค.
- ๋๋๋ก์ด๋ฉด 8๋ก ๋์ด๊ฐ์ผ๋ฉด ์ข๊ฒ ๋ค.
- 9 / 10 LTS ์ง์ํ์ง ์๋๋ค.
- ์ต๋ํ 11 / 12๋ก ๋์ด๊ฐ๋๋ก ๊ฐ์ด๋
๋ฌด์์ ๊ฒํ ํด์ผํ ๊น?
- 6 /7์์ 8์ผ๋ก ์ ํ ์ ๊ณ ๋ ค ์ฌํญ
- Permanent์์ญ โ Metaspace ์์ญ์ผ๋ก ๋ณ๊ฒฝ๋จ
- ์ด์ ๋ฐ๋ฅธ JVM ์ต์ ์์ ์ด ํ์
- 8์์ permanent์์ญ์ ๋ํ VM ์ต์ ์ ๊ทธ๋๋ก ์ฌ์ฉํ๊ฑฐ๋,
- ์ญ์ ๋ง ํ ํ MetaSpace ์์ญ์ ๋ํ VM ์ต์ ๊ฐ์ ์ค์ ํ์ง ์์ผ๋ฉด ์ฌ๊ฐํ ์ฑ๋ฅ ์ ํ ๋ฐ์
- 6 /7 ๋ณด๋ค Generic ์ฌ์ฉ์ด ์๊ฒฉํด์ ธ ๊ธฐ์กด์ ์ฌ์ฉํ๋ Generic ํฌํจ ์ฝ๋๊ฐ ์ปดํ์ผ ๋์ง ์์ ์ ์์.
- 9 / 10 โ 11๋ก ์ ํ ์ ๊ณ ๋ ค ์ฌํญ
- JavaEE์ CORBA ๋ชจ๋๋ค์ด removed ๋์์
- removed๋ JavaEE์ CORBA ๋ชจ๋์ ์ฌ์ฉํ๋์ง ํ์ธํ์.
- IBM / Redhat
- ์๋์ผ๋ก migration ์ฒดํฌ๋ฅผ ์ํ ToolKit ๋ฐฐํฌ ์ค
๊ธฐ์กด Application๊ณผ์ ํธํ์ฑ ๊ฒํ
- ๊ฐ๋ฐ ํ Application
- ๋๋ถ๋ถ์ ๋ฌธ์ ์์
- Library / Framework
- ํ์ธ์ด ํ์.
- Dependency์ ์ฝํ ๋ชจ์ต
- OpenSource Application๊ด์ ํธํ์ฑ ํ์ธํ๊ธฐ!
- AdoptOpenJDK ๋ง์ด๊ทธ๋ ์ด์ ๊ฐ์ด๋
์๋ฒ ํ๊ฒฝ๋ ์ฒดํฌ!
- 32bit CPU ๋ฏธ์ง์
- OpenJDK ์ต์ ๋ฒ์ ์ CentOs 5 ๋ฏธ์ง์
- ๊ตฌ ABI๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋๋
8u1720b11๋ฒ์
์ฌ์ฉ์ ์ฌ์ฉ ๊ฐ๋ฅํ๋, - CentOS 5๋ OS Update ์ง์ ์ค๋จ์ผ๋ก ๋ณด์ ์ทจ์ฝ์ ์ด ๋ฐ์ํ ์ ์์.
์กฐ๊ธ ๋ AdoptOpenJDK์ ์์ ์ฑ์ ๋์ผ ์ ์์๊น?
- ๊ธฐ๋ฅ ํ ์คํธ
- ํธํ ํ ์คํธ
- CI ํ์ดํ๋ผ์ธ ๊ตฌ์ถ
- ์์ ์ฑ ํ๋ณด๋ฅผ ์ํ ๋ค์ํ test suites๋ฅผ ๋ณด์
- https://github.com/adoptOpenJDK/openjdk-tests
- ์์ ์ฑ์ ํ๋ณดํ๋ ์์คํ
์ ํ์์ฑ
- OpenJDK ์ ๊ท ๋ฒ์ ผ ๋์ค๋ฉด?
- ์์ ์ฑ ํ ์คํธํ๊ณ
- ๋ฐ๋ก ๊ฒฐ๊ณผ๋ฅผ ๊ตฌ์ฑ์์๊ฒ ๋ด์ฉ ์ ํ
- JMH
- Java ๊ธฐ๋ณธ Funtion๋ค์ ์ฑ๋ฅ์ธก์ ํ๋ ๋๊ตฌ(by OpenJDK ์ปค๋ฎค๋ํฐ)
- 10์๊ฐ ์ด์ ํ ์คํธ ์งํ
- ํ๋ก์ธ์ค๊ฐ ์ฃฝ๊ฑฐ๋ / ์ฑ๋ฅ์ด ์ข์ง ์๋ ๊ฒฝ์ฐ ๊ฐ์ง ๊ฐ๋ฅ
- http://hg.openjdk.java.net/code-tools/jmh-jdk-microbenchmarks/
- OpenJDK ์ ๊ท ๋ฒ์ ผ ๋์ค๋ฉด?
- JMH ํ
์คํธ ํ์ดํ๋ผ์ธ ๊ตฌ์ฑ
- gocd
- 6์๊ฐ๋ง๋ค AdoptOpenJDK ์๋ฐ ๋ฒ์ ผ์ ํ์ธํ
- ๊ฐ ํ๋ซํผ๋ง๋ค ์ต์ 10์๊ฐ ๋ง๋ค ํ ์คํธ ์ํ ํ ๊ณต์ ํ๋ ํ๋ก์ธ์ค
์ ์ฌ Java ๋ฒ์ ์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์๊น?
- Java๊ธฐ๋ฐ ์ดํ๋ฆฌ์ผ์ด์
์ด ๊ตฌ๋๋๋ Machine๋ง ์์ญ๋ง๋
- ํ๋ ํ๋ ์ ์์ ์ผ๋ก ๋ฒ์ ํ์ธ์ด ํ๋ค์ด์
- ์ฐ๋ฆฌ ํ์์ ์ฌ์ฉํ๊ณ ์๋ OpenJDK๋ ๋ผ์ด์ผ์ค ์๋ฐ์ธ๊ฐ์?
- ์ฐ๋ฆฌ ํ์ฌ์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ Java8 ๋ฒ์ ผ์ด ๋ฌด์์ธ๊ฐ์?
- ๋ฒ์ ผ ๋ณํ์ ์งํ๊ฐ ํ์ํด์.
- Java Version ํ์ธํ๋ ๋ฐฉ๋ฒ
- Local Java
- Docker
- K8s
- JVM ์ต์
-XshowSettings:properties