๋ฐ‘๋ฐ”๋‹ฅ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์‡ผํ•‘ ๋ฐ์ดํ„ฐ ์—”์ง€๋‹ˆ์–ด๋ง ๊ณ ๊ตฐ ๋ถ„ํˆฌ๊ธฐ

์ „์ˆ˜ํ˜„๋‹˜

์„œ๋น„์Šค ์ดˆ๊ธฐ ๋Ÿฐ์นญ ์ƒํ™ฉ์€?

  • ๋‹จ์ผ 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 ์ž๋™ ๋ณต๊ตฌ

์š”์•ฝํ•˜์ž๋ฉด?

  • DB ๋ณ€๊ฒฝ์‚ฌํ•ญ์€ update_ts ํ•„๋“œ๋ฅผ ์‚ฌ์šฉ
  • ์ˆœ์„œ์— ์ƒ๊ด€์—†์ด ์ตœ์ข…์  ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ID ๊ธฐ๋ฐ˜์˜ ๊ตฌ์กฐ
  • ๋ฐ์ดํ„ฐ ์‹ค์‹œ๊ฐ„ / ๋ฐฐ์น˜ / ๋ณต๊ตฌ ์ „๋žต
    • ์นดํ”„์นด๋ฅผ ํ†ตํ•œ ์ด๋ฒคํŠธ ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ
    • hopping ๋ฐฉ์‹์œผ๋กœ ํŠน์ •์‹œ๊ฐ„์˜ ๋ณ€๊ฒฝ์„ ์บ์น˜ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๋ณด์ • ๋ฐฐ์น˜
    • ID ๊ธฐ๋ฐ˜์˜ ํŒŒํ‹ฐ์…”๋‹ ๋ณต๊ตฌ ์ฒ˜๋ฆฌ
  • ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ๊ตฌ์ถ•
  • ์šด์˜ํ™˜๊ฒฝ์˜ ์ž๋™๋ณต๊ตฌ

Reference

์นด์นด์˜ค์—์„œ๋Š” ์–ด๋–ป๊ฒŒ 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๋ง๊ณ  ๋‹ค๋ฅธ ๋Œ€์•ˆ์€ ์—†์„๊นŒ?

์œ„์— ๋ฒค๋”๋ฅผ ์ค‘ ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉํ•ด๋ณด์ž.

  • 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๊ณผ์˜ ํ˜ธํ™˜์„ฑ ๊ฒ€ํ† 

์„œ๋ฒ„ ํ™˜๊ฒฝ๋„ ์ฒดํฌ!

  • 32bit CPU ๋ฏธ์ง€์›
    • OpenJDK ์ตœ์‹  ๋ฒ„์ „์€ CentOs 5 ๋ฏธ์ง€์›
    • ๊ตฌ ABI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œ๋œ 8u1720b11๋ฒ„์ „ ์‚ฌ์šฉ์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‚˜,
    • CentOS 5๋Š” OS Update ์ง€์› ์ค‘๋‹จ์œผ๋กœ ๋ณด์•ˆ ์ทจ์•ฝ์ ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ.

์กฐ๊ธˆ ๋” AdoptOpenJDK์˜ ์•ˆ์ •์„ฑ์„ ๋†’์ผ ์ˆ˜ ์—†์„๊นŒ?

  • ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ
  • ํ˜ธํ™˜ ํ…Œ์ŠคํŠธ
  • CI ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ•
  • ์•ˆ์ •์„ฑ์„ ํ™•๋ณดํ•˜๋Š” ์‹œ์Šคํ…œ์˜ ํ•„์š”์„ฑ
    • OpenJDK ์‹ ๊ทœ ๋ฒ„์ ผ ๋‚˜์˜ค๋ฉด?
      • ์•ˆ์ •์„ฑ ํ…Œ์ŠคํŠธํ•˜๊ณ 
      • ๋ฐ”๋กœ ๊ฒฐ๊ณผ๋ฅผ ๊ตฌ์„ฑ์›์—๊ฒŒ ๋‚ด์šฉ ์ „ํŒŒ
    • JMH
      • Java ๊ธฐ๋ณธ Funtion๋“ค์„ ์„ฑ๋Šฅ์ธก์ •ํ•˜๋Š” ๋„๊ตฌ(by OpenJDK ์ปค๋ฎค๋‹ˆํ‹ฐ)
      • 10์‹œ๊ฐ„ ์ด์ƒ ํ…Œ์ŠคํŠธ ์ง„ํ–‰
      • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ฃฝ๊ฑฐ๋‚˜ / ์„ฑ๋Šฅ์ด ์ข‹์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ๊ฐ์ง€ ๊ฐ€๋Šฅ
      • http://hg.openjdk.java.net/code-tools/jmh-jdk-microbenchmarks/
  • JMH ํ…Œ์ŠคํŠธ ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์„ฑ
    • gocd
    • 6์‹œ๊ฐ„๋งˆ๋‹ค AdoptOpenJDK ์ž๋ฐ” ๋ฒ„์ ผ์„ ํ™•์ธํ›„
      • ๊ฐ ํ”Œ๋žซํผ๋งˆ๋‹ค ์ตœ์†Œ 10์‹œ๊ฐ„ ๋งˆ๋‹ค ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ํ›„ ๊ณต์œ ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค

์ „์‚ฌ Java ๋ฒ„์ „์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์„๊นŒ?

  • Java๊ธฐ๋ฐ˜ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๊ตฌ๋™๋˜๋Š” Machine๋งŒ ์ˆ˜์‹ญ๋งŒ๋Œ€
    • ํ•˜๋‚˜ ํ•˜๋‚˜ ์ˆ˜ ์ž‘์—…์œผ๋กœ ๋ฒ„์ „ ํ™•์ธ์ด ํž˜๋“ค์–ด์š”
    • ์šฐ๋ฆฌ ํŒ€์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” OpenJDK๋Š” ๋ผ์ด์„ผ์Šค ์œ„๋ฐ˜์ธ๊ฐ€์š”?
    • ์šฐ๋ฆฌ ํšŒ์‚ฌ์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” Java8 ๋ฒ„์ ผ์ด ๋ฌด์—‡์ธ๊ฐ€์š”?
    • ๋ฒ„์ ผ ๋ณ€ํ™”์˜ ์ง€ํ‘œ๊ฐ€ ํ•„์š”ํ•ด์š”.
  • Java Version ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•
    • Local Java
    • Docker
    • K8s
    • JVM ์˜ต์…˜
      • -XshowSettings:properties