์ต๊ทผ์ DDL์ ์คํ์ํค๋ ๊ณผ์ ์์ ๋ชจ๋ Insert ์ฟผ๋ฆฌ๊ฐ ๋๊ธฐ ์ํ์ ๋น ์ ธ ๋ฐ๋ฆฌ๋ ํ์์ ๋ฐ๊ฒฌํด์ ์ ํํ ์์ธ ๋ถ์์ ์งํํ๊ณ ๊ทธ ๋ด์ฉ์ ๊ธฐ๋กํฉ๋๋ค.๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ์ํฉ1. datagrip์์ ๋ฌด๊ฑฐ์ด select ์ฟผ๋ฆฌ ์คํ2. datagrip์์ ์๋ก์ด ์ธ์ ์ผ๋ก ALTER TABLE ์ฟผ๋ฆฌ๋ฅผ online DDL๋ก ์คํ3. server application์์ Insert ์ฟผ๋ฆฌ๊ฐ ๋๊ธฐ ์ํ์ ๋น ์ง์ผ๋ฐ์ ์ผ๋ก ๋ดค์ ๋๋ ์ค์ datagrip ๋ญ๊ฐ ๋ฌธ์ ์ง? ๋ผ๋ ์๊ฐ์ด ๋ค ์ ์๋๋ฐ์. ์์ธํ ๋ด์ฉ์ ์ข ๋ ์๋์์ ํ์ด๋ณด๊ฒ ์ต๋๋ค.๋ฌธ์ ์์ธ์ ๋ค์๊ณผ ๊ฐ์์ด์MySQL์์ ALTER TABLE ์ฟผ๋ฆฌ๋ ์คํ์ ์ํด์ table metadata lock(=MDL)์ ํ๋ํด์ผ ํ๊ณ ์ด ๋, Exclusive Lock..
ํน์ Zero Copy์ ๋ํด์ ์์๋์? ์ ๋ ๋ฐ์ดํฐ ์์ง๋์ด๋ง์ ๊ณต๋ถํ๋ฉด์ ์ฒ์ ์๊ฒ๋์๊ณ ๊ฝค ํฅ๋ฏธ๋ก์ด ๋ฉ์ปค๋์ฆ์ด์์ต๋๋ค ใ ใ ๊ทธ๋ฆฌ๊ณ ์ต๊ทผ์ kotlin์ ํ์ฉํด์ ํ์ผ ์๋น์ ๋ค๋ฃจ๋ ์์ ์ ์งํํ๋ ๊ฒฝํ์ด ์๋๋ฐ, ๋น์ ํ์ผ ์ ์ก ์๋๊ฐ ๊ฝค ์ค์ํ ์์์๊ณ ์์ฐ์ค๋ฝ๊ฒ Zero Copy๊ฐ ๋ ์ฌ๋์ต๋๋ค.kotlin์ ์ฌ์ฉํ๋ค๋ณด๋ JVM์ด๋ผ๋ ๋๊ตฌ์์ ์ค๋ ํน์ฑ ๋ฑ๋ ๊ณ ๋ฏผํ๊ฒ ๋๊ณ ๊ฝค ์๋ฏธ์๋ ๊ฒฝํ์ด์๋๋ฐ์.๊ทธ๋์ ์ค๋์ Zero Copy์ ๋ํด์ ๊ฐ๋จํ๊ฒ ์๊ฐํ๊ณ kotlin S3 upload์์ Zero Copy๊ฐ ๊ฐ๋ฅํ์ง? ๋ฑ์ ๊ณต์ ํด๋ณด๊ฒ ์ต๋๋ค :)๋จผ์ , ์ฝ๋๋ ๋ฒจ์์ ํ์ผ ์ ์ก ๋ฑ local storage(e.g. disk)์์ ํ์ผ์ ์ฝ์ด์ ์ธ๋ถ๋ก ๋ณด๋ด๋ ๋ก์ง์ ๊ตฌ์ฑํ๋ค๋ฉด ์ด๋ค ๊ณผ์ ์ ๊ฑฐ์น๊ฒ ๋ ๊น..
์ด ๊ธ์ ์ต๊ทผ์ ์์๋ ์๋ฒ OOMKilled ์ฅ์ ๊ณผ์ ์ ๊ธฐ๋ก ๋ฐ ๊ณต์ ํ๋ฉฐ ํ๊ณ ํ๋ ๊ธ์ ๋๋ค.๋ํ ์ด ๊ธ์ ์ธํ๋ผ ๋ ๋ฒจ(cpu, memory)์์์ ์ฅ์ ๊ฐ์ง ๋ฐ ๋์ ํ๋ก์ธ์ค์ ๊ดํ ๋ด์ฉ์ ๊ธฐ๋กํ๊ธฐ ๋๋ฌธ์ NPE(Null Point Exception) ๊ฐ์ ์ฝ๋ ๋ ๋ฒจ์์์ ๋ช ํํ๊ณ ๋จ์ํ ๋ฌธ์ ๋ ํฌ๊ฒ ๋ค๋ฃจ์ง ์์ต๋๋ค. ์ฌ๋ฌ๋ถ๋ค์ ์๋ฒ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํด OOMKilled ์ฅ์ ๋ฐ์ ์ ์ด๋ป๊ฒ ๋์ํ์๋์?์ ๋ ๋ณดํต ๋ค์๊ณผ ๊ฐ์ ํ๋ก์ธ์ค๋ก ๋์ํฉ๋๋ค.1. ์ฅ์ ๊ฐ์ง2. ์์๋๋ ์์ธ ๋ฒ์๋ฅผ ํฉ๋ฆฌ์ ์ผ๋ก ์ฐพ๊ณ ๊ฐ์ค์ ์ธ์ด๋ค. (๊ฐ์ค ์๋ฆฝ)3. ๊ฐ์ค์ ๊ฒ์ฆํ๊ธฐ ์ํด APM, log ๋ฑ ๋จ์๋ค์ ์ฐพ๊ณ ๊ฐ์ค์ ํ์ธํ๊ณ ์์ธ ๋ฒ์๋ฅผ ์ขํ๊ฐ๋ค. (๊ฐ์ค ๊ฒ์ฆ ๋ฐ route finding)4. ์ ๊ณผ์ ์ ๋ฐ๋ณตํ์ฌ ์์ธ์..
MySQL ์คํ ๊ณํ ๋ถ์๐ก ์คํ ๊ณํ์์ ํ์๋๋ ๊ฐ ์ปฌ๋ผ์ด ์ด๋ค ๊ฒ์ ์๋ฏธํ๋์ง ์์๋ณด์๋ฉ๋ด์ผํ ์์ ์ด๋ ๊ฐ๋ ์ฟผ๋ฆฌ ์ฑ๋ฅ์ ํ์ธํ๊ณ ์ถ์ ๋ EXPLAIN ํค์๋๋ฅผ ํตํด MySQL ์คํ ๊ณํ์ ์ดํด๋ณด๊ฒ ๋๋๋ฐ, ๊ฐ ์นผ๋ผ์ ์๋ฏธ์ ๋ํด์๋ ๋ช ํํ๊ฒ ์ ๋ฆฌํ๊ฑฐ๋ ์์๋ณธ ๊ฒฝํ์ด ์๋ ๊ฒ ๊ฐ์์ ์ด๋ฒ ๊ธฐํ์ ์ด๋ฅผ ์ ๋ฆฌํ๊ณ ์๊ธฐํฉ๋๋ค.๊ฐ ์นผ๋ผ์ ๊ตฌ์ฑ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.id, select_type, table, partitions, type, possible_keys, key, key_len, ref, rows, filtered, Extra id ์นผ๋ผ๐ก ID ์ปฌ๋ผ์ ๋จ์ํ SELECT ์ฟผ๋ฆฌ ์๋ฅผ ์๋ฏธํ๊ณ ํด๋น SELECT ์ฟผ๋ฆฌ๋ฅผ ์๋ณํ๊ธฐ ์ํ ์ฉ๋๋ก ์ฌ์ฉ๋จ.SELECT ์ฟผ๋ฆฌ ์๋ฅผ ์๋ฏธํ๋ฏ๋ก ๊ฐ์ ID๊ฐ ์ฌ๋ฌ..
ํธ๋์ญ์ ์ ๊ฒฉ๋ฆฌ ์์ค(isolation level)์ ๋ํด์ ์ ํํ๊ฒ ์ดํดํ๋ ๊ฒ์ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง์ ์ ํํ๊ฒ ์ ์ดํ๋ ๊ฒ์ ์์ด์ ์ค์ํฉ๋๋ค. ํ์ง๋ง ๊ฒฉ๋ฆฌ ์์ค์ด ๊ตฌ์ฒด์ ์ผ๋ก ์ด๋ป๊ฒ ๋์ํ๋์ง ์ ํํ๊ฒ ๋ชจ๋ฅด๊ณ ์์๋ ์ฌ์ค์ ๋ฐ๊ฒฌํด์ ์ฌํ์ต์ ์ํด ๋ด์ฉ์ ์ ๋ฆฌํฉ๋๋ค. ์ด ๊ธ์ MySQL ๊ธฐ์ค์ผ๋ก ์์ฑํฉ๋๋ค. ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค ๊ฒฉ๋ฆฌ ์์ค์ ํฌ๊ฒ ๋ค์๊ณผ ๊ฐ์ด 4๊ฐ์ง๋ก ๋ค์๊ณผ ๊ฐ์ด ๋๋๊ฒ ๋ฉ๋๋ค. READ UNCOMMITTED READ COMMITTED REPEATABLE READ SERIALIZABLE 1๋ฒ์์ 4๋ฒ์ผ๋ก ๊ฐ์๋ก ํธ๋์ญ์ ๊ฐ์ ๋ฐ์ดํฐ ๊ฒฉ๋ฆฌ ์์ค์ด ๋์์ง๋ฉฐ, ๋์ ์ฒ๋ฆฌ ์ฑ๋ฅ์ด ๋จ์ด์ง๋ ๊ฒ์ด ์ผ๋ฐ์ ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ณดํต SERIALIZABLE ์ ๋๊ฐ ์๋๋ฉด ํฌ๊ฒ ์ฑ๋ฅ์ ๊ฐ์ ์ด๋ ์ ํ๋ ๋ฐ์ํ์ง ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bymm2O/btsxq4iIEXB/8UQtuYMzmLBfamlT4VPfi0/img.png)
์ต๊ทผ์ staging ํ๊ฒฝ์์ ๋จ์ผ ์ธ์คํด์ค๋ฅผ ๋๋ฉด์๋ ๋ฌด์ค๋จ ๋ฐฐํฌ๋ฅผ ํ๊ณ ์ถ์๋๋ฐ, AWS Elastic Beanstalk์ ํ์ฉํด์ ์ด๋ฅผ ์์ฝ๊ฒ ํด๊ฒฐํ ์ ์์์ต๋๋ค. ๊ทธ๋์ ์ ์ ๊ฐ์ ๊ณ ๋ฏผ์ ํ๊ณ ๊ณ์ ๋ถ๋ค์ ์ํด ๊ธฐ๋ก์ฐจ ์ด ๊ธ์ ์์ฑํฉ๋๋ค. AWS Elastic Beanstalk์ vercel๊ณผ ์ ์ฌํ๊ฒ ์ฝ๋๋ง ์ฌ๋ฆฌ๋ฉด ์ธํ๋ผ ๊ด๋ จ ์ธํ ์ ๋งค์ฐ ์์ฝ๊ณ ๋น ๋ฅด๊ฒ ๋ฐฐํฌํ ์ ์๋๋ก ๋์์ฃผ๋ PaaS(Platform as a Service)์ ๋๋ค. Elastic Beanstalk์ ์ฌ์ฉํ๋ฉด ์ธํ๋ผ ๊ด๋ฆฌ๋ฅผ ์ ๊ฒฝ์ฐ์ง ์์ ์ ์๊ณ ๋น์ฉ๋ Elastic Beanstalk ๊ธฐ๋ฅ ์์ฒด๋ ๋ฌด๋ฃ์ด๋ฉฐ S3, EC2 ๋ฑ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ฅํ๊ณ ์คํํ๊ธฐ ์ํด ์์ฑํ ๋ฆฌ์์ค์ ๋ํด์๋ง ์ง๋ถํ๋ฉด ๋ฉ๋๋ค. ๊ทธ๋์ ๋ฆฌ์์ค๋ฅผ ์ต..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/dQiAvx/btrSJEc2h0g/uX44PpvZTuXQen3oWT6BL1/img.png)
gRPC๋ ์ ์ค์ฉ์ ์ผ๊น? ์ด ๊ธ์ gRPC๋ฅผ ์ ํ ์ง ์ผ๋ง ์ ๋๊ฑฐ๋ ์๋กญ๊ฒ ์์๋ณด๊ณ ์ถ์ ์ฌ๋์ ๋์์ผ๋ก go, gRPC ๊ทธ๋ฆฌ๊ณ MSA ํ๊ฒฝ์์์ ์ค๋ฌด ๊ฒฝํ์ ๊ธฐ๋ฐํ์ฌ ์์ฑ๋์์ต๋๋ค. ์ ๋ gRPC๋ ์ธํ๋ผ ๊ตฌ์ถ์ ์์ด ๋ค์ ๋ฌ๋์ปค๋ธ๊ฐ ์๋ ํธ์ด์ง๋ง ๊ต์ฅํ ์ค์ฉ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ค๋์ ์ด์ ๋ํ ์ด์ผ๊ธฐ๋ฅผ ํด๋ณด๋ ค๊ณ ํด์. ๋จผ์ , gRPC๋ ๋ฌด์์ผ๊น์? gRPC๋ ํ ๋ฌธ์ฅ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ด ์ ์ํด๋ณผ ์ ์์ต๋๋ค. gRPC๋ Protocol Buffer๋ฅผ IDL(Interface Definition Language)๋ก ์ฌ์ฉํ๋ HTTP/2๊ธฐ๋ฐ์ RPC ํ๋ ์์ํฌ์ ๋๋ค. ์์ํ ๋จ์ด๋ค์ด ๋ง์ ์ ์์ ๊ฒ ๊ฐ์๋ฐ์! ์ ๊น ๋ช ๊ฐ์ง ์ดํด๋ณผ๊น์? RPC(Remote Procedure Call) RPC๋ ๋ง ๊ทธ๋..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/nOhao/btrjkDGNlPV/TmAIZOxG7snnpdzWjcRQhK/img.png)
๊ฐ์ nginx ์ค์ ์ค์ ์ค์ ํ directory๋ฅผ ์ฐพ์ง ๋ชปํ๋ ๊ฒ์ผ๋ก ํ๋จ๋์ด log๋ฅผ ํ์ธํด๋ณด๋ 403 (13: Permission denied) ์๋ฌ๊ฐ ๋ฐ์ํ์๊ณ , ์ด๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๊ธฐ๋กํฉ๋๋ค. error ๋ฐ์ ์ํฉ server { listen 80; root /xxx/xxx/build; index index.html; server_name _; location / { try_files $uri $uri/ /index.html; } } /etc/nginx/sites-available/default์ ์์ ๊ฐ์ด ์ค์ ์ ํด๋๊ณ ํด๋น ํฌํธ๋ก ์ ์ํด๋ณด๋ 500 Error์ ํจ๊ป ํ์ด์ง๋ฅผ ์ฐพ์ ์ ์์๋ค. ๊ทธ๋์ ๋ฐ๋ก log๋ฅผ ํ์ธํด๋ณด์๊ณ , /var/log/nginx/error.log์์ ๋ค์๊ณผ ๊ฐ์ ..
- Total
- Today
- Yesterday
- 2023 ๊ฐ๋ฐ์ ํ๊ณ
- rate limit
- mysql ์คํ ๊ณํ
- ์ฅ์ ํ๊ณ
- 2023 ํ๊ณ
- ๊น์ด/๋๋น ์ฐ์ ํ์(DFS/BFS)
- ํด์
- HTTP
- Golang
- ์ข์ ์์ง๋์ด
- AWS re:Invent 2023
- mysql
- kotlin s3 upload
- 2024ํ๊ณ
- ๋ฐฑ์ค
- ์ข์ ์ฝ๋๋ ๋ฌด์์ธ๊ฐ?
- grpc client
- ํ(Heap)
- golang oomkilled
- ํ๋ก๊ทธ๋๋จธ์ค
- mysql metadata_locks
- ์คํ/ํ
- ์ฝ๋ฉํ ์คํธ
- ์ถ์ ์ง๋
- Aws Reinvent 2023
- ์ข์ ๊ฐ๋ฐ์
- Go
- ์๊ณ ๋ฆฌ์ฆ
- ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค
- ์ข์ ๊ฐ๋ฐ์ ๋๊ธฐ
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |