๐Ÿ’ป 152

Finagle & Thrift

RPC RPC?RPC๋ž€?์›๊ฒฉ ํ”„๋กœ์‹œ์ € ํ˜ธ์ถœ(remote procedure call, RPC)์€ ๋ณ„๋„์˜ ์›๊ฒฉ ์ œ์–ด๋ฅผ ์œ„ํ•œ ์ฝ”๋”ฉ ์—†์ด ๋‹ค๋ฅธ ์ฃผ์†Œ ๊ณต๊ฐ„์—์„œ ํ•จ์ˆ˜๋‚˜ ํ”„๋กœ์‹œ์ €๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒํ•˜๋Š” ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹  ๊ธฐ์ˆ ์ด๋‹ค. ๋‹ค์‹œ ๋งํ•ด, ์›๊ฒฉ ํ”„hhlab.tistory.com Thrift Introduction to Thrift — Thrift Tutorial 1.0 documentationDocs » Introduction to Thrift Edit on GitHub Introduction to Thrift Thrift Architecture. Image from wikipedia.org Thrift is a lightweight, language-independent software stack with an ..

๐Ÿ’ป/MLOps 2024.05.09

RPC?

RPC๋ž€?์›๊ฒฉ ํ”„๋กœ์‹œ์ € ํ˜ธ์ถœ(remote procedure call, RPC)์€ ๋ณ„๋„์˜ ์›๊ฒฉ ์ œ์–ด๋ฅผ ์œ„ํ•œ ์ฝ”๋”ฉ ์—†์ด ๋‹ค๋ฅธ ์ฃผ์†Œ ๊ณต๊ฐ„์—์„œ ํ•จ์ˆ˜๋‚˜ ํ”„๋กœ์‹œ์ €๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒํ•˜๋Š” ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹  ๊ธฐ์ˆ ์ด๋‹ค. ๋‹ค์‹œ ๋งํ•ด, ์›๊ฒฉ ํ”„๋กœ์‹œ์ € ํ˜ธ์ถœ์„ ์ด์šฉํ•˜๋ฉด ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰ ํ”„๋กœ๊ทธ๋žจ์— ๋กœ์ปฌ ์œ„์น˜์— ์žˆ๋“  ์›๊ฒฉ ์œ„์น˜์— ์žˆ๋“  ๋™์ผํ•œ ์ฝ”๋“œ๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.๊ฐ์ฒด ์ง€ํ–ฅ์˜ ์›์น™์„ ์‚ฌ์šฉํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด์˜ ๊ฒฝ์šฐ ์›๊ฒฉ ํ”„๋กœ์‹œ์ € ํ˜ธ์ถœ์„ ์›๊ฒฉ ํ˜ธ์ถœ(remote invocation) ๋˜๋Š” ์›๊ฒฉ ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ(remote method invocation)์ด๋ผ๊ณ  ์ผ์ปซ๋Š”๋‹ค.์ถœ์ฒ˜: ์œ„ํ‚ค๋ฐฑ๊ณผ RPC vs REST RPC์™€ REST ๋น„๊ต - API ์•„ํ‚คํ…์ฒ˜ ๊ฐ„์˜ ์ฐจ์ด์  - AWS์›๊ฒฉ ํ”„๋กœ์‹œ์ € ํ˜ธ์ถœ(RPC)๊ณผ REST๋Š” ๋ชจ๋‘ ์ธํ„ฐ๋„ท ํ†ต์‹ ์„ ์œ„ํ•ด ..

๐Ÿ’ป/MLOps 2024.05.09

Kubernetes API ํด๋ผ์ด์–ธํŠธ ์‚ฌ์šฉ

์ตœ๊ทผ ๋งŽ์€ ํŒ€์›๋“ค์ด ์„œ๋น„์Šค, ํŒŒ์ดํ”„๋ผ์ธ ๋‚ด์—์„œ k8s ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์ •๋ณด๋ฅผ ์–ป์–ด์™€์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ, ์ด๋ฏธ์ง€ ๋‚ด์— kubectl์„ ์„ค์น˜ํ•˜๊ณ  ์ฝ”๋“œ์—์„œ kubectl ์ปค๋งจ๋“œ๋ฅผ string์œผ๋กœ ์ €์žฅํ•ด ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜(?) ์‹ฌ์ง€์–ด token๊ฐ’์„ string์œผ๋กœ ๋ฐ•์•„ ๋„ฃ์œผ๋ ค๋Š”(!) ์‹œ๋„๋ฅผ ํ•˜๊ณ  ์žˆ์Œ์„ ๊นจ๋‹ฌ์•˜๋‹ค. ์ด ๋ถ€๋ถ„์„ ๋ฐ”๋กœ ์žก์œผ๋ฉฐ, ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์–ด๋–ค ๋ฌธ์˜๋ฅผ ๋งŽ์ด ๋ฐ›์•˜๋Š”์ง€๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ •๋ฆฌํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค. kubectl์„ ์ด๋ฏธ์ง€ ๋‚ด ์„ค์น˜ํ•œ๋‹ค(?) ์‚ฌ์‹ค ๋ถˆ๊ฐ€๋Šฅํ•œ ๋ฐฉ๋ฒ•์€ ์•„๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€ ๋‚ด kubectl ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์„ค์น˜ํ•ด๋‘”๋‹ค. ์„œ๋น„์Šค๊ฐ€ ์‚ฌ์šฉํ•  ์ ์ ˆํ•œ ๊ถŒํ•œ์˜ ๊ณ„์ •์„ ์ถ”๊ฐ€ํ•˜๊ณ , kubeconfig๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. configmap์œผ๋กœ kubeconfig๋ฅผ ๋งˆ์šดํŠธํ•œ๋‹ค. ์ด ๊ฒฝ์šฐ, ์ฝ”๋“œ ์—์„œ ์‹œ์Šคํ…œ ์ปค๋งจ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ํŒŒ์‹ฑํ•ด์„œ ์‚ฌ์šฉํ•˜๊ฒŒ..

๐Ÿ’ป/MLOps 2024.02.23

stern : ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ ํ”Œ๋žซํผ ๋ชจ๋‹ˆํ„ฐ๋ง

Stern GitHub - stern/stern: โŽˆ Multi pod and container log tailing for Kubernetes -- Friendly fork of https://github.com/wercker/ster โŽˆ Multi pod and container log tailing for Kubernetes -- Friendly fork of https://github.com/wercker/stern - stern/stern github.com Stern์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ Kubernetes ํŒŒ๋“œ ๋ฐ ํŒŒ๋“œ ๋‚ด์˜ ์—ฌ๋Ÿฌ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ ๊ฒฐ๊ณผ๋Š” ๋น ๋ฅธ ๋””๋ฒ„๊น…์„ ์œ„ํ•ด ์ƒ‰์œผ๋กœ ๊ตฌ๋ถ„๋œ๋‹ค. ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ฐ€์ง„ ์„œ๋น„์Šค๋‚˜, ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ ํ”Œ๋žซํผ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•  ๋•Œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ..

๐Ÿ’ป/MLOps 2024.02.23

[k8s] `kubectl top`

`kubectl top` kubectl top pods -n spark kubectl top nodes ์œ„ ๋ช…๋ น์–ด๋กœ ํ•œ ๋ˆˆ์— ํŒŒ๋“œ๋ณ„๋กœ cpu, mem์„ ์–ผ๋งˆ๋‚˜ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๋…ธ๋“œ๋ณ„๋กœ๋„ ์–ผ๋งˆ๋‚˜ ์ž์›์ด ์‚ฌ์šฉ์ค‘์ธ์ง€ ํ™•์ธ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ์— ๊ฒฝ๊ณ ๋‚˜ ์žฅ์• ๊ฐ€ ๋‚˜๋ฉด, Grafana์— ๋“ค์–ด๊ฐ€์ง€ ์•Š๊ณ  ํ˜ธ๋‹ค๋‹ฅ ํ„ฐ๋ฏธ๋„์„์ผœ '๋ˆ„๊ฐ€ spark์œผ๋กœ ์ž์›์„ ์–ผ๋งˆ๋‚˜ ํ• ๋‹นํ•ด ์“ฐ๊ณ  ์žˆ๋‚˜'ํ™•์ธํ•˜๋Š” ๋ฐ์— ์ž์ฃผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค. Kubernetes Metrics API Resource metrics pipeline For Kubernetes, the Metrics API offers a basic set of metrics to support automatic scaling and similar use cases. T..

๐Ÿ’ป/MLOps 2024.01.02

[programming in Scala] 01. ์Šค์นผ๋ผ ํ™˜๊ฒฝ ์„ค์ •

# 0. jdk ์„ค์น˜ sudo apt install openjdk-11-jdk # 1. Scala ์„ค์น˜ (cs setup) curl -fL https://github.com/coursier/coursier/releases/latest/download/cs-x86_64-pc-linux.gz | gzip -d > cs && chmod +x cs && ./cs setup # 2. IntelliJ Scala Plugin ์„ค์น˜ # 3. IntelliJ ์—์„œ, Settings > Build, Execution, Deployment > Build Tools > sbt > sbt project: sbt shell > Allow overring sbt version ์„ uncheck. build.properties์— ๋ฒ„..

Apache Cassandra

๊ฐœ์š” ์•„ํŒŒ์น˜ ์นด์‚ฐ๋“œ๋ผ(Apache Cassandra)๋Š” ์˜คํ”ˆ ์†Œ์Šค๋กœ ๊ฐœ๋ฐœ๋œ ๋ถ„์‚ฐํ˜• NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ž…๋‹ˆ๋‹ค. ์ด๋Š” ํŒŒํ‹ฐ์…˜๋œ ๋„“์€ ์—ด(column) ์ €์žฅ ๋ชจ๋ธ์„ ์ œ๊ณตํ•˜๋ฉฐ, ์ตœ์ข… ์ผ๊ด€์„ฑ(eventual consistency)์„ ๊ฐ€์ง„๋‹ค. ์•„ํŒŒ์น˜ ์นด์‚ฐ๋“œ๋ผ๋Š” ์›๋ž˜ Facebook์—์„œ ์„ค๊ณ„๋˜์—ˆ์œผ๋ฉฐ, staged event-driven architecture (SEDA)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” Amazon์˜ Dynamo ๋ถ„์‚ฐ ์ €์žฅ ๋ฐ ๋ณต์ œ ๊ธฐ์ˆ ๊ณผ Google์˜ Bigtable ๋ฐ์ดํ„ฐ ๋ฐ ์ €์žฅ ์—”์ง„ ๋ชจ๋ธ์˜ ๊ฒฐํ•ฉ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค. Dynamo์™€ Bigtable์€ ๋ชจ๋‘ ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๊ณ  ์‹ ๋ขฐ์„ฑ์ด ๋†’์œผ๋ฉฐ ๊ณ ๊ฐ€์šฉ์„ฑ์„ ๊ฐ–์ถ˜ ์ €์žฅ ์‹œ์Šคํ…œ์˜ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฐ๊ฐ์€ ๊ฐœ์„ ํ•  ..

๐Ÿ’ป/MLOps 2023.07.31

.yaml ์—์„œ ์ค„ ๋ฐ”๊ฟˆํ•˜๋Š” 9๊ฐ€์ง€ ๋ฐฉ๋ฒ•

https://stackoverflow.com/questions/3790454/how-do-i-break-a-string-in-yaml-over-multiple-lines How do I break a string in YAML over multiple lines? I have a very long string: Key: 'this is my very very very very very very long string' I would like to express it over multiple shorter lines, e.g., Key: 'this is my very very very ' + 'long ... stackoverflow.com

[Pinot] ์˜คํ”ˆ์†Œ์Šค ๊ธฐ์—ฌ ํ”„๋กœ์„ธ์Šค

1. ๋“ค์–ด๊ฐ€๊ธฐ ์ „, 1.1 ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ • [Pinot] Apache Pinot ๊ฐœ๋ฐœ ํ™˜๊ฒฝ Apache Pinot ์šด์˜์ด ์•„๋‹Œ, ๊ฐœ๋ฐœ ๋ฐ ํ”„๋กœ์ ํŠธ ๊ธฐ์—ฌ๋ฅผ ๋ชฉ์ ์œผ๋กœ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์„ค์ •ํ•œ๋‹ค. WSL ํ™˜๊ฒฝ์„ ๊ธฐ์ค€์œผ๋กœ ํ•œ๋‹ค. Running Pinot locally - Apache Pinot Docs Note that some installations of the JDK do not contain the JNI binding hhlab.tistory.com 1.2 ๋ชจ๋“ˆ ๋ฐ ์•„ํ‚คํ…์ณ pinot-common ํ”„๋กœ์ ํŠธ ์ „๋ฐ˜์˜ ๊ณตํ†ต ํด๋ž˜์Šค๋“ค์„ ์ œ๊ณต (config, metrics, metadata, pql.parsers, request, response, fs, ...) pinot-trasnport Broker์˜ ๋ถ„์‚ฐ-์ˆ˜์ง‘..

๐Ÿ’ป/MLOps 2023.03.05