์ด ๊ธ์์๋์ด ๊ธ์์๋ golang์ ํ์ฉํ rate limit์ ๋ํด์ ๋ค๋ฃน๋๋ค.์ต๊ทผ์ ํ์ฌ ์ ๋ฌด์์ tcp 100์ผ๋ก ๊ณ ์ ํ๊ณ ์ ์ ์ ๋ณด๋ฅผ ๋ฑ๋กํ๋ batch job์ ๊ฐ๋ฐํ์๋๋ฐ,golang์์ ์ ๊ณตํ๋ rate limit ํจํค์ง๋ฅผ ํ์ฉํ์ต๋๋ค.๊ทธ๋์ ๊ด๋ จํด์ ๋ด์ฉ์ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํด์!์ด ๊ธ์ ์ฝ๋ ์ฌ๋๋ค์ ๋ค์๊ณผ ๊ฐ์ ์ง์์ ์ป์ด๊ฐ๊ธธ ๊ธฐ๋ํฉ๋๋ค์ฒ๋ฆฌ์จ ์ ํ(rate limit)์ด๋?golang rate package ์ฃผ์*์ ๊ฐ ๊ฒฝํํ ์ผ์ด์ค๋ ๋จ์ผ batch job์ kubernetes cronjob์ผ๋ก ๋์์ํจ ๊ฒฝ์ฐ์ ๋๋ค.๋ถ์ฐ ์์คํ ์์์ rate limiter๋ ๋ ๋ค๋ฅธ ๊ณ ๋ฏผ๊ฑฐ๋ฆฌ๋ค์ด ์กด์ฌํฉ๋๋ค.๊ทธ ๊ณ ๋ฏผ๊ฑฐ๋ฆฌ์ ๋ํ ์ด์ผ๊ธฐ๋ ๊ธ ํ๋ฐ๋ถ์ ๋ค๋ฃน๋๋ค. ์ฒ๋ฆฌ์จ ์ ํ(rate limit)์ด๋?rate li..
๊ฐ์ ๊ณ ๋ฃจํด(goroutine)๊ณผ ์ฑ๋(channel)์ ๋ํด์ ์์๋ณด์ ๊ณ ๋ฃจํด(goroutine) ๊ณ ๋ฃจํด์ Go๋ฐํ์์์ ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ์ด์ฉํ ๋์์ฑ์ ์ง์ํ๋ ๊ฒฝ๋ ๊ฐ์ ์ฐ๋ ๋์ด๋ค. ๊ฐ์ ์ฐ๋ ๋๋ผ๋ ๊ฒ์ ์ค์ ๋ก OS๋ ๋ฒจ์์ ์ฐ๋ ๋๊ฐ ์์ฑ๋๋ ๊ฒ์ด ์๋๋ผ ์ ํ๋ฆฌ์ผ์ด์ (Go)๋ ๋ฒจ์์ ๊ฐ์์ ์ฐ๋ ๋๊ฐ ์์ฑ๋๋ ๊ฒ์ ์๋ฏธํ๋ ์ฃผ์ํ์ ๋ฐํ์์์๋ง ๋์ํ๊ธฐ ๋๋ฌธ์ main ๋ฐํ์์ด ์ข ๋ฃ๋๋ฉด ๋ชจ๋ ๊ณ ๋ฃจํด์ด ์ข ๋ฃ๋๋ ์ฃผ์ํ์ go ํค์๋๋ฅผ ์ด์ฉํด ๊ณ ๋ฃจํด์ ์ ์ธํ๋ค ๋ค์ ์์๋ฅผ ํตํด์ ๊ณ ๋ฃจํด์ ์ฌ์ฉ๋ฒ์ ์์๋ณด์ import ( "fmt" "time" ) func main() { // go ํค์๋๋ฅผ ์ด์ฉํด ๊ณ ๋ฃจํด ์์ฑ -> ๋์์ ์คํ๋จ. ์ ์ฒด ์ถ๋ ฅ์ ๋ณด๋ฉด์ ์ดํดํด๋ณด์ go bar("foo") bar("bar") /..
๊ฐ์ Go์ ๊ตฌ์กฐ์ฒด(struct)์ ํ์ (type) ๊ทธ๋ฆฌ๊ณ ๋ฉ์๋(method)์ ๋ํด์ ์์๋ณด์ ๊ตฌ์กฐ์ฒด(struct) go์์๋ c์ ๊ตฌ์กฐ์ฒด์ ์ ์ฌํ ํํ๋ฅผ ์ง์ํ๋ค ๊ตฌ์กฐ์ฒด๋ฅผ ์ ์ธํจ์ผ๋ก์จ ์๋ก์ด ์๋ฃํ์ ์ ์ธํ ์ ์๊ณ , type-safe์๋ ํจ๊ณผ๊ฐ ์๋ค ์๋ ์์๋ฅผ ํตํด ์์๋ณด์ type user struct { name string age int } func main() { user := user{name: "mokhs00", age: 23} fmt.Println(user) } receiver์ method go์์๋ receiver๋ฅผ ์ด์ฉํด ๋ฉ์๋ ๊ธฐ๋ฅ์ ์ด์ฉํ ์ ์๋ค func (t T) Foo() {}ํ์์ด๋ฉฐ ๊ธฐ์กด ํจ์์์ ์์ (t *T)๊ฐ ์ถ๊ฐ๋ ๊ฒ์ด๋ค (T๋ ํ์ ์ด๋ค) T์ ๋ํ rece..
๊ฐ์ go ์ธ์ด ์ฌ์ฉ๋ฒ์ ๋ํด์ ์์๋ณด์ ๋ค์ ๋ชฉ์ฐจ๋ก ์งํ๋๋ฉฐ ๋ค๋ฅธ ์ธ์ด๋ก ํ๋ก๊ทธ๋๋ฐ์ ๊ฒฝํํด๋ณธ ์ฌ๋ ๋์์ผ๋ก ์์ฑํ๋ค ๊ฐ์ ๋ณ์, ์์ ์ ์ธ(+์ถ์ฝํ ์ ์ธ) ํ์ ํจ์ ์ ์ธ(ignore value(_), defer, export function) ์กฐ๊ฑด๋ฌธ(if, switch) ๋ฐ๋ณต๋ฌธ(for) pointer(*) ๋ฐฐ์ด(slice, array) ๋ณ์, ์์ ์ ์ธ ๊ธฐ๋ณธ์ ์ผ๋ก ์์๋ const, ๋ณ์๋ var ํค์๋๋ฅผ ์ด์ฉํด ์ ์ธํ๋ค ์ฌ๋ฌ ๋ฐฉ๋ฒ์ผ๋ก ๋ณ์, ์์ ์ ์ธ๋ ๊ฐ๋ฅํ๋ฐ, ์ด๋ ์๋ ์ฝ๋๋ก ์ดํด๋ณด์ // ๊ธฐ๋ณธ ์ ์ธ var age = 23 var name string name = "mokhs" // ๋ณ์ ์ถ์ฝํ ์ ์ธ : ์๋์ ์์ธํ ์์๋ณด์ role := "Backend Engineer" // ์์ ์ ์ธ ..
- Total
- Today
- Yesterday
- AWS re:Invent 2023
- ์ข์ ์์ง๋์ด
- ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค
- ํ๋ก๊ทธ๋๋จธ์ค
- Golang
- ์ฅ์ ํ๊ณ
- 2023 ๊ฐ๋ฐ์ ํ๊ณ
- 2024ํ๊ณ
- ์ข์ ๊ฐ๋ฐ์
- ํ(Heap)
- kotlin s3 upload
- ๊น์ด/๋๋น ์ฐ์ ํ์(DFS/BFS)
- ๋ฐฑ์ค
- ์๊ณ ๋ฆฌ์ฆ
- mysql mdl
- mysql metadata_locks
- ํด์
- ์ถ์ ์ง๋
- grpc client
- mysql metadata lock
- mysql
- ์ข์ ๊ฐ๋ฐ์ ๋๊ธฐ
- Aws Reinvent 2023
- HTTP
- 2023 ํ๊ณ
- Go
- ์ฝ๋ฉํ ์คํธ
- ์คํ/ํ
- golang oomkilled
- mysql ์คํ ๊ณํ
| ์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |