/images/avatar.png

๐Ÿž๐Ÿฅ๐Ÿฅ– ๋ผ์ผ๋ฆฌ์˜ ์ฝ”๋“œ ๋ถ€์Šค๋Ÿฌ๊ธฐ ๐Ÿž๐Ÿฅ๐Ÿฅ–

[์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ๋๋‚ด๋Š” GO์–ธ์–ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•ต์‹ฌ ๊ธฐ์ดˆ ์ž…๋ฌธ ๊ณผ์ •] Section 5 : Go ๋ฐ์ดํ„ฐ ํƒ€์ž…

์ธํ”„๋Ÿฐ ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ๋๋‚ด๋Š” GO์–ธ์–ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•ต์‹ฌ ๊ธฐ์ดˆ ์ž…๋ฌธ ๊ณผ์ • ๊ฐ•์˜ ์ •๋ฆฌ 5.1 Bool boolean ํƒ€์ž… : ์ฐธ, ๊ฑฐ์ง“ ์กฐ๊ฑด๋ถ€ ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž์™€ ์ฃผ๋กœ ํ•จ๊ป˜ ์‚ฌ์šฉํ•œ๋‹ค. !, ||(or) &&(and) ์•”๋ฌต์ ์ธ ํ˜• ๋ณ€ํ™˜์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. 0, Nil โ†’ false ๋ณ€ํ™˜ ๋ถˆ๊ฐ€๋Šฅ ์˜ˆ์ œ 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 var b1 bool = true var b2 bool = false b3 := true // b4 := 1 // Error!

[Elastic Cloud] nginx ๋กœ๊ทธ๋ฅผ Elasticsearch Cloud๋กœ ์ˆ˜์ง‘ํ•˜๊ธฐ

๊ฐœ์š” ํŒŒ์ผ๋น„ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›น ์„œ๋ฒ„(nginx) ๋กœ๊ทธ ํŒŒ์ผ์„ ์ˆ˜์ง‘ํ•˜๊ณ  Elasticsearch Cloud์— ์ „์†กํ•œ๋‹ค. Cloud์—์„œ ์ƒ์„ฑํ•œ Kibana ์‚ฌ์ดํŠธ์— ์ ‘์†ํ•˜๋ฉด ์—ฌ๋Ÿฌ ํ”Œ๋žซํผ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•  ์ˆ˜ ์žˆ๋Š” ์˜ˆ์‹œ ํŒŒ์ผ์„ ์ฐธ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ํŒŒ์ผ๋น„ํŠธ ์„ค์น˜ ํŒŒ์ผ๋น„ํŠธ๋Š” ์ˆ˜์ง‘ํ•  ๋กœ๊ทธ๊ฐ€ ์Œ“์ด๋Š” ์„œ๋ฒ„์— ์„ค์น˜ํ–ˆ๋‹ค. 1 2 3 4 cd /usr/local/src sudo curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.11.1-linux-x86_64.tar.gz tar xzvf filebeat-7.11.1-linux-x86_64.tar.gz cd filebeat-7.11.1-linux-x86_64 Elastic Cloud ์ธ์ฆ์ •๋ณด ์„ค์ • Elastic Cloud ์ ‘์†์„ ์œ„ํ•˜์—ฌ filebeat.yml์˜ ๊ด€๋ จํ•ญ๋ชฉ์˜ ์ฃผ์„์„ ํ•ด์ œํ•˜๊ณ  ์ธ์ฆ์ •๋ณด๋ฅผ ์„ค์ •ํ•œ๋‹ค. ๊ทธ ์™ธ ํ•„์š”ํ•œ ์„ค์ • ์ •๋ณด๋Š” ์•„๋ž˜ ๋งํฌ๋ฅผ ์ฐธ์กฐํ•œ๋‹ค.

[์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ๋๋‚ด๋Š” GO์–ธ์–ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•ต์‹ฌ ๊ธฐ์ดˆ ์ž…๋ฌธ ๊ณผ์ •] Section 4 : Go ํŒจํ‚ค์ง€ ๊ธฐ์ดˆ

์ธํ”„๋Ÿฐ ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ๋๋‚ด๋Š” GO์–ธ์–ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•ต์‹ฌ ๊ธฐ์ดˆ ์ž…๋ฌธ ๊ณผ์ • ๊ฐ•์˜ ์ •๋ฆฌ 4.1 Go ํŒจํ‚ค์ง€ Go์˜ ํŒจํ‚ค์ง€๋Š” ์ฝ”๋“œ ๊ตฌ์กฐํ™”(๋ชจ๋“ˆํ™”) ๋ฐ ์žฌ์‚ฌ์šฉ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ์‘์ง‘๋„, ๊ฒฐํ•ฉ๋„๋ฅผ ๋Š์Šจํ•˜๊ฒŒ ํ•ด์•ผ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์‰ฝ๊ณ  ๊ฐ€๋…์„ฑ์ด ์ข‹์•„์ง„๋‹ค. ํด๋ฆฐ์ฝ”๋“œ Go๋Š” ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ž‘์€ ๋‹จ์œ„์˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์ด๋Ÿฌํ•œ ์ž‘์€ ํŒจํ‚ค์ง€๋ฅผ ๊ฒฐํ•ฉํ•ด์„œ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•  ๊ฒƒ์„ ๊ถŒ๊ณ ํ•˜๊ณ  ์žˆ๋‹ค. ํŒจํ‚ค์ง€์ด๋ฆ„ = ๋””๋ ‰ํ† ๋ฆฌ ์ด๋ฆ„ ๊ฐ™์€ ํŒจํ‚ค์ง€ ๋‚ด ์†Œ์ŠคํŒŒ์ผ๋“ค์€ ๋””๋ ‰ํ† ๋ฆฌ๋ช…์„ ํŒจํ‚ค์ง€๋ช…์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ๋„ค์ด๋ฐ ๊ทœ์น™ : ์†Œ๋ฌธ์ž private ๋Œ€๋ฌธ์ž public Go์—์„œ main ํŒจํ‚ค์ง€๋Š” ํŠน๋ณ„ํ•˜๊ฒŒ ์ธ์‹๋œ๋‹ค โ†’ ์ปดํŒŒ์ผ๋Ÿฌ์—์„œ๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์‹œ์ž‘์  start point๋กœ ์ธ์‹ํ•œ๋‹ค.

[Elastic Cloud] Elastic Cloud๋กœ ์ด๊ด€ ์ž‘์—…

๊ฐœ์š” Elastic Cloud๋กœ ๋ฐ์ดํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๊ธฐ A to Z filebeat, logstash ๋Š” ๋ฐ์ดํ„ฐ ์†Œ์Šค๊ฐ€ ์žˆ๋Š” ์‹œ์Šคํ…œ์— ์„ค์น˜ํ•˜๊ณ , Elasticsearch, Kinaba ๋Š” Elastic Cloud ๋กœ ์„ธํŒ…ํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค. ์—˜๋ผ์Šคํ‹ฑ์„œ์น˜ ์šด์˜ ๋ชจ๋‹ˆํ„ฐ๋ง ๊นŒ์ง€ Elastic Cloud ์—์„œ ๋ชจ๋‘ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋”ฐ๋กœ ๊ตฌ์„ฑํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค. Elastic Cloud ๊ตฌ์กฐ ์ž‘์—… ๋ชฉํ‘œ On-promise๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š” ๊ฒ€์ƒ‰์–ด ํ‚ค์›Œ๋“œ๋ฅผ Elastic Cloud ํ™˜๊ฒฝ์œผ๋กœ ์ด๊ด€ํ•œ๋‹ค. ์ถ”ํ›„์— ๋งต์œผ๋กœ ์‹œ๊ฐํ™” ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ธฐ์กด ๋ฐ์ดํ„ฐ์— location(latitude, longitude)๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. ํ˜„์žฌ ์‹œ์Šคํ…œ ๊ตฌ์„ฑ ํ˜„์žฌ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š” ๊ฒ€์ƒ‰์–ด ํ‚ค์›Œ๋“œ ์ธ๋ฑ์Šค ๋ช… โ†’ wini_srch_kwrd_hist-yyyymm ES_MASTER ์„œ๋ฒ„์—์„œ ๋กœ๊ทธ์Šคํƒœ์‹œ๊ฐ€ ๋งค์ผ 09:00 ๋งˆ๋‹ค ํ‚ค์›Œ๋“œ ํ…Œ์ด๋ธ”์„ ์กฐํšŒํ•˜์—ฌ ์—˜๋ผ์Šคํ‹ฑ์„œ์น˜์— ์ €์žฅ์‹œํ‚ค๊ณ  ์žˆ๋‹ค.

[์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ๋๋‚ด๋Š” GO์–ธ์–ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•ต์‹ฌ ๊ธฐ์ดˆ ์ž…๋ฌธ ๊ณผ์ •] Section 3 : Go ์ œ์–ด๋ฌธ ๋ฐ ๋ฐ˜๋ณต๋ฌธ

์ธํ”„๋Ÿฐ ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ๋๋‚ด๋Š” GO์–ธ์–ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•ต์‹ฌ ๊ธฐ์ดˆ ์ž…๋ฌธ ๊ณผ์ • ๊ฐ•์˜ ์ •๋ฆฌ 3.1 ์กฐ๊ฑด๋ฌธ 3.1.1 ์กฐ๊ฑด๋ฌธ IF if ๋ฌธ์€ ๋ฐ˜๋“œ์‹œ Boolean ํ˜•์œผ๋กœ ๊ฒ€์‚ฌํ•ด์•ผ ํ•œ๋‹ค. ๋‹ค๋ฅธ ์–ธ์–ด์ฒ˜๋Ÿผ 1, 0 ์œผ๋กœ ์กฐ๊ฑด๋ฌธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค โ†’ ์ž๋™ ํ˜•๋ณ€ํ™˜ ๋ถˆ๊ฐ€ ์†Œ๊ด„ํ˜ธ๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 func main() { var a int = 20 b := 20 if a >= 15 { fmt.

[์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ๋๋‚ด๋Š” GO์–ธ์–ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•ต์‹ฌ ๊ธฐ์ดˆ ์ž…๋ฌธ ๊ณผ์ •] Section 2 : Go ๊ธฐ์ดˆ ๋ฌธ๋ฒ•

์ธํ”„๋Ÿฐ ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ๋๋‚ด๋Š” GO์–ธ์–ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•ต์‹ฌ ๊ธฐ์ดˆ ์ž…๋ฌธ ๊ณผ์ • ๊ฐ•์˜ ์ •๋ฆฌ 2.1 ๋ณ€์ˆ˜ ๋ฐ ์ƒ์ˆ˜ ๋ณ€์ˆ˜ ์„ ์–ธ GO ์–ธ์–ด๋Š” ์ž๋ฃŒํ˜•์„ ์ •์ ์œผ๋กœ ๊ฒ€์‚ฌํ•˜๋ฏ€๋กœ ๋ณ€์ˆ˜์— ์ž๋ฃŒํ˜•์ด ์ •ํ•ด์ ธ ์žˆ๋‹ค. ์ •์  ์ž๋ฃŒํ˜•์„ ์ง€์›ํ•˜์ง€๋งŒ ์ž๋ฃŒํ˜• ์„ ์–ธ ํ• ๋‹นํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์„ ๋ฒ—์–ด๋‚˜๊ฒŒ ํ•ด์ฃผ๋Š” ์ž๋ฃŒํ˜• ์ถ”๋ก  ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค. ์ •์ˆ˜ ํƒ€์ž… 0, ์‹ค์ˆ˜ 0.0, ๋ฌธ์ž์—ด “”, boolean (true, false) ๋ณ€์ˆ˜ ๋ช…์˜ ์ฒซ ๊ธ€์ž๋Š” ์ˆซ์ž๋กœ ์‹œ์ž‘ํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค. ๋Œ€์†Œ๋ฌธ์ž๋Š” ๊ตฌ๋ถ„ํ•˜๋ฉฐ ๋ฌธ์ž, ์ˆซ์ž, ๋ฐ‘์ค„, ํŠน์ˆ˜๊ธฐํ˜ธ๋กœ ๋ณ€์ˆ˜๋ช… ์„ ์–ธ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. 1 2 3 4 5 6 7 8 9 10 11 12 13 var a int var b string var c, d, e int var f, g, h int = 1, 2, 3 var i float32 = 11.