{
    "componentChunkName": "component---src-templates-home-js",
    "path": "/",
    "result": {"data":{"allMdx":{"nodes":[{"frontmatter":{"title":"[Redis] ZSet의 내부 구조: skip 리스트","description":"레디스 ZSet가 내부적으로 사용하는 zip 리스트와 skip 리스트에 대해 정리하겠습니다. Pugh가 논문에서 제안한 skip 리스트의 구조와 레디스에서 이를 어떻게 활용하는지에 대해 정리합니다.","date":"July 21, 2024","category":"computer-science","tags":["redis","zset","sorted-set","skip-list","zip-list","data-structure","database"],"hero_image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/bdbc0e8de38f67f757a721405565b402/12a3e/thumbnail.png","srcSet":"/static/bdbc0e8de38f67f757a721405565b402/9d9e0/thumbnail.png 225w,\n/static/bdbc0e8de38f67f757a721405565b402/cc174/thumbnail.png 450w,\n/static/bdbc0e8de38f67f757a721405565b402/12a3e/thumbnail.png 900w,\n/static/bdbc0e8de38f67f757a721405565b402/4dd11/thumbnail.png 1800w","sizes":"(min-width: 900px) 900px, 100vw"},"sources":[{"srcSet":"/static/bdbc0e8de38f67f757a721405565b402/3f003/thumbnail.webp 225w,\n/static/bdbc0e8de38f67f757a721405565b402/ba134/thumbnail.webp 450w,\n/static/bdbc0e8de38f67f757a721405565b402/e7f7d/thumbnail.webp 900w,\n/static/bdbc0e8de38f67f757a721405565b402/fc420/thumbnail.webp 1800w","type":"image/webp","sizes":"(min-width: 900px) 900px, 100vw"}]},"width":900,"height":450}}},"hero_image_alt":"thumbnail image"},"id":"a71b6ce9-2222-55c0-be92-c5e82af4fa8d","slug":"posts/86/"},{"frontmatter":{"title":"[Redis] ZSet, Hash, List는 왜 내부적으로 zip 리스트를 사용할까?","description":"레디스는 높은 성능을 위해 모든 데이터를 메모리에서 관리합니다. 동시에 성능 저하를 최소화하는 선에서 메모리를 최대한 효율적으로 활용하기 위해 노력하는데, 대표적인 예가 zip 리스트입니다.","date":"July 20, 2024","category":"computer-science","tags":["redis","zip-list","zset","sorted-set","hash","list","data-structure","database"],"hero_image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/6c8124a74635664507ee40ca2bd4ea3c/12a3e/thumbnail.png","srcSet":"/static/6c8124a74635664507ee40ca2bd4ea3c/9d9e0/thumbnail.png 225w,\n/static/6c8124a74635664507ee40ca2bd4ea3c/cc174/thumbnail.png 450w,\n/static/6c8124a74635664507ee40ca2bd4ea3c/12a3e/thumbnail.png 900w,\n/static/6c8124a74635664507ee40ca2bd4ea3c/4dd11/thumbnail.png 1800w","sizes":"(min-width: 900px) 900px, 100vw"},"sources":[{"srcSet":"/static/6c8124a74635664507ee40ca2bd4ea3c/3f003/thumbnail.webp 225w,\n/static/6c8124a74635664507ee40ca2bd4ea3c/ba134/thumbnail.webp 450w,\n/static/6c8124a74635664507ee40ca2bd4ea3c/e7f7d/thumbnail.webp 900w,\n/static/6c8124a74635664507ee40ca2bd4ea3c/fc420/thumbnail.webp 1800w","type":"image/webp","sizes":"(min-width: 900px) 900px, 100vw"}]},"width":900,"height":450}}},"hero_image_alt":"thumbnail image"},"id":"de0e774d-4d5e-5bd8-8699-55440e4773c2","slug":"posts/85/"},{"frontmatter":{"title":"[k8s] taint와 toleration","description":"스케줄링과 관련된 개념인 taint와 toleration에 대해 가볍게 정리합니다. 각종 애드온들에서도 많이 쓰이며, 공식문서들을 이해하기 위해 필수로 알고 있어야 하는 사전 지식으로 보입니다.","date":"July 15, 2024","category":"docs","tags":["k8s","taint","toleration","node","pod","scheduling","infrastructure","devops"],"hero_image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/fb2e3ddb77ff5ac8537a9f72263d3cc7/12a3e/thumbnail.png","srcSet":"/static/fb2e3ddb77ff5ac8537a9f72263d3cc7/9d9e0/thumbnail.png 225w,\n/static/fb2e3ddb77ff5ac8537a9f72263d3cc7/cc174/thumbnail.png 450w,\n/static/fb2e3ddb77ff5ac8537a9f72263d3cc7/12a3e/thumbnail.png 900w,\n/static/fb2e3ddb77ff5ac8537a9f72263d3cc7/4dd11/thumbnail.png 1800w","sizes":"(min-width: 900px) 900px, 100vw"},"sources":[{"srcSet":"/static/fb2e3ddb77ff5ac8537a9f72263d3cc7/3f003/thumbnail.webp 225w,\n/static/fb2e3ddb77ff5ac8537a9f72263d3cc7/ba134/thumbnail.webp 450w,\n/static/fb2e3ddb77ff5ac8537a9f72263d3cc7/e7f7d/thumbnail.webp 900w,\n/static/fb2e3ddb77ff5ac8537a9f72263d3cc7/fc420/thumbnail.webp 1800w","type":"image/webp","sizes":"(min-width: 900px) 900px, 100vw"}]},"width":900,"height":450}}},"hero_image_alt":"thumbnail image"},"id":"346cb606-7ea7-5fed-ba18-5c74b9592a48","slug":"posts/84/"},{"frontmatter":{"title":"[k8s] kube-scheduler와 스케줄링 과정","description":"쿠버네티스 클러스터에서 스케줄러의 역할과 스케줄링의 기본적인 흐름에 대해 정리합니다. 파드가 실행될 노드가 선택되기까지 거치는 필터링과 스코어링 단계를 설명하고, 스케줄러 설정 변경 방법에 대한 개요만 정리합니다.","date":"July 14, 2024","category":"docs","tags":["k8s","node","pod","scheduler","scheduling","infrastructure","devops"],"hero_image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/67599b2c976b3aed9241a035f0e2560c/12a3e/thumbnail.png","srcSet":"/static/67599b2c976b3aed9241a035f0e2560c/9d9e0/thumbnail.png 225w,\n/static/67599b2c976b3aed9241a035f0e2560c/cc174/thumbnail.png 450w,\n/static/67599b2c976b3aed9241a035f0e2560c/12a3e/thumbnail.png 900w,\n/static/67599b2c976b3aed9241a035f0e2560c/4dd11/thumbnail.png 1800w","sizes":"(min-width: 900px) 900px, 100vw"},"sources":[{"srcSet":"/static/67599b2c976b3aed9241a035f0e2560c/3f003/thumbnail.webp 225w,\n/static/67599b2c976b3aed9241a035f0e2560c/ba134/thumbnail.webp 450w,\n/static/67599b2c976b3aed9241a035f0e2560c/e7f7d/thumbnail.webp 900w,\n/static/67599b2c976b3aed9241a035f0e2560c/fc420/thumbnail.webp 1800w","type":"image/webp","sizes":"(min-width: 900px) 900px, 100vw"}]},"width":900,"height":450}}},"hero_image_alt":"thumbnail image"},"id":"66011b73-381e-56a8-a924-01d2c0fc504d","slug":"posts/83/"},{"frontmatter":{"title":"[FCM] 안드로이드 doze 모드에서 수신 가능한 푸시 알림을 발송하고 테스트하기","description":"안드로이드 6.0버전부터 doze 모드라는 개념이 도입되었습니다. 이와 관련하여 FCM으로 푸시 알림을 보낼 때 신경써야 하는 점과 adb라는 툴로 doze 모드에 진입하는 방법까지 가볍게 정리합니다.","date":"July 13, 2024","category":"development","tags":["cro","android","doze-mode","fcm","adb"],"hero_image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/e256d4a5f46d9e1e16db8720353ee9e7/12a3e/thumbnail.png","srcSet":"/static/e256d4a5f46d9e1e16db8720353ee9e7/9d9e0/thumbnail.png 225w,\n/static/e256d4a5f46d9e1e16db8720353ee9e7/cc174/thumbnail.png 450w,\n/static/e256d4a5f46d9e1e16db8720353ee9e7/12a3e/thumbnail.png 900w,\n/static/e256d4a5f46d9e1e16db8720353ee9e7/4dd11/thumbnail.png 1800w","sizes":"(min-width: 900px) 900px, 100vw"},"sources":[{"srcSet":"/static/e256d4a5f46d9e1e16db8720353ee9e7/3f003/thumbnail.webp 225w,\n/static/e256d4a5f46d9e1e16db8720353ee9e7/ba134/thumbnail.webp 450w,\n/static/e256d4a5f46d9e1e16db8720353ee9e7/e7f7d/thumbnail.webp 900w,\n/static/e256d4a5f46d9e1e16db8720353ee9e7/fc420/thumbnail.webp 1800w","type":"image/webp","sizes":"(min-width: 900px) 900px, 100vw"}]},"width":900,"height":450}}},"hero_image_alt":"thumbnail image"},"id":"1d149538-dbb1-596c-a3e6-a0bfe6f89b6f","slug":"posts/82/"},{"frontmatter":{"title":"[k8s] 클러스터 오버프로비저닝의 필요성과 구현","description":"클러스터 오버프로비저닝과 오토스케일러를 통해 수평 확장성이 높은 클러스터를 구축하는 방법에 대해 가볍게 정리합니다. 오버프로비저닝의 필요성을 다루고, 파드의 우선순위 및 선점을 토대로 오버프로비저닝의 구현 방법을 이해해봅니다.","date":"July 11, 2024","category":"development","tags":["k8s","pod","overprovisioning","autoscaler","aws","aws-eks","infrastructure","devops"],"hero_image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/dd32981a1c51c01998bd51006d5d9f88/12a3e/thumbnail.png","srcSet":"/static/dd32981a1c51c01998bd51006d5d9f88/9d9e0/thumbnail.png 225w,\n/static/dd32981a1c51c01998bd51006d5d9f88/cc174/thumbnail.png 450w,\n/static/dd32981a1c51c01998bd51006d5d9f88/12a3e/thumbnail.png 900w,\n/static/dd32981a1c51c01998bd51006d5d9f88/4dd11/thumbnail.png 1800w","sizes":"(min-width: 900px) 900px, 100vw"},"sources":[{"srcSet":"/static/dd32981a1c51c01998bd51006d5d9f88/3f003/thumbnail.webp 225w,\n/static/dd32981a1c51c01998bd51006d5d9f88/ba134/thumbnail.webp 450w,\n/static/dd32981a1c51c01998bd51006d5d9f88/e7f7d/thumbnail.webp 900w,\n/static/dd32981a1c51c01998bd51006d5d9f88/fc420/thumbnail.webp 1800w","type":"image/webp","sizes":"(min-width: 900px) 900px, 100vw"}]},"width":900,"height":450}}},"hero_image_alt":"thumbnail image"},"id":"d7e9bacc-a2b4-586d-9f81-48b32c871b91","slug":"posts/81/"},{"frontmatter":{"title":"[k8s] 컨테이너 프로브를 통한 헬스체킹","description":"프로브란 컨테이너에 대해 주기적으로 실행되는 헬스체킹 작업입니다. 공식문서를 토대로 livenessProbe, readinessProbe, startupProbe에 대해 가볍게 정리합니다.","date":"July 9, 2024","category":"docs","tags":["k8s","container","probe","liveness-probe","readiness-probe","startup-probe","infrastructure","devops"],"hero_image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/42285e5e12f6d0cdaf3003540d95db71/12a3e/thumbnail.png","srcSet":"/static/42285e5e12f6d0cdaf3003540d95db71/9d9e0/thumbnail.png 225w,\n/static/42285e5e12f6d0cdaf3003540d95db71/cc174/thumbnail.png 450w,\n/static/42285e5e12f6d0cdaf3003540d95db71/12a3e/thumbnail.png 900w,\n/static/42285e5e12f6d0cdaf3003540d95db71/4dd11/thumbnail.png 1800w","sizes":"(min-width: 900px) 900px, 100vw"},"sources":[{"srcSet":"/static/42285e5e12f6d0cdaf3003540d95db71/3f003/thumbnail.webp 225w,\n/static/42285e5e12f6d0cdaf3003540d95db71/ba134/thumbnail.webp 450w,\n/static/42285e5e12f6d0cdaf3003540d95db71/e7f7d/thumbnail.webp 900w,\n/static/42285e5e12f6d0cdaf3003540d95db71/fc420/thumbnail.webp 1800w","type":"image/webp","sizes":"(min-width: 900px) 900px, 100vw"}]},"width":900,"height":450}}},"hero_image_alt":"thumbnail image"},"id":"8ff23abd-cdee-5893-94fb-6fb4c8a0f962","slug":"posts/80/"},{"frontmatter":{"title":"[k8s] 파드 생명주기, 파드 장애 회복과 컨테이너 재시작","description":"쿠버네티스 공식문서 중 파드 생명주기 관련 내용을 가볍게 정리합니다. 스케줄링, 파드의 단계, 컨테이너 상태 및 재시작 과정 등에 대해 다룹니다.","date":"July 6, 2024","category":"docs","tags":["k8s","node","pod","container","kubectl-name","crash-loop-backoff-keyword","restart-policy-field","infrastructure","devops"],"hero_image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/d23fab6a4add1ddeb0c0207dffc58d9b/12a3e/thumbnail.png","srcSet":"/static/d23fab6a4add1ddeb0c0207dffc58d9b/9d9e0/thumbnail.png 225w,\n/static/d23fab6a4add1ddeb0c0207dffc58d9b/cc174/thumbnail.png 450w,\n/static/d23fab6a4add1ddeb0c0207dffc58d9b/12a3e/thumbnail.png 900w,\n/static/d23fab6a4add1ddeb0c0207dffc58d9b/4dd11/thumbnail.png 1800w","sizes":"(min-width: 900px) 900px, 100vw"},"sources":[{"srcSet":"/static/d23fab6a4add1ddeb0c0207dffc58d9b/3f003/thumbnail.webp 225w,\n/static/d23fab6a4add1ddeb0c0207dffc58d9b/ba134/thumbnail.webp 450w,\n/static/d23fab6a4add1ddeb0c0207dffc58d9b/e7f7d/thumbnail.webp 900w,\n/static/d23fab6a4add1ddeb0c0207dffc58d9b/fc420/thumbnail.webp 1800w","type":"image/webp","sizes":"(min-width: 900px) 900px, 100vw"}]},"width":900,"height":450}}},"hero_image_alt":"thumbnail image"},"id":"9c172e0b-25db-53e6-a23e-a725b27684aa","slug":"posts/79/"},{"frontmatter":{"title":"[k8s] ArgoCD과 Argo Rollouts 릴리즈별 k8s 버전 호환성 검토","description":"ArgoCD과 Argo Rollouts 릴리즈들은 각각 특정 쿠버네티스 버전들에 대해서만 테스트되었습니다. 이를 확인하는 방법과 마이너 버전들 간의 Breaking Changes를 확인하는 방법이 대해 정리합니다.","date":"July 5, 2024","category":"development","tags":["argocd","argo-rollouts","k8s","infrastructure","devops"],"hero_image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/72d49a56ac52fc0d51e2b561789c410e/12a3e/thumbnail.png","srcSet":"/static/72d49a56ac52fc0d51e2b561789c410e/9d9e0/thumbnail.png 225w,\n/static/72d49a56ac52fc0d51e2b561789c410e/cc174/thumbnail.png 450w,\n/static/72d49a56ac52fc0d51e2b561789c410e/12a3e/thumbnail.png 900w,\n/static/72d49a56ac52fc0d51e2b561789c410e/4dd11/thumbnail.png 1800w","sizes":"(min-width: 900px) 900px, 100vw"},"sources":[{"srcSet":"/static/72d49a56ac52fc0d51e2b561789c410e/3f003/thumbnail.webp 225w,\n/static/72d49a56ac52fc0d51e2b561789c410e/ba134/thumbnail.webp 450w,\n/static/72d49a56ac52fc0d51e2b561789c410e/e7f7d/thumbnail.webp 900w,\n/static/72d49a56ac52fc0d51e2b561789c410e/fc420/thumbnail.webp 1800w","type":"image/webp","sizes":"(min-width: 900px) 900px, 100vw"}]},"width":900,"height":450}}},"hero_image_alt":"thumbnail image"},"id":"2a850395-9177-5c22-b81a-4e0a43060197","slug":"posts/78/"},{"frontmatter":{"title":"[k8s] 쿠버네티스와 도커, 그리고 dockershim 제거","description":"AWS EKS에서 곧 v1.23에 대한 지원이 종료됩니다. v1.24로 업그레이드하기 전에 숙지하고 있어야 하는 dockershim 컴포넌트 제거와 컨테이너 런타임에 대하여 가볍게 정리하겠습니다.","date":"June 30, 2024","category":"docs","tags":["k8s","docker","dockershim","container","container-runtime","infrastructure","devops"],"hero_image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/05e28b051ead968072a8006d2b7f1f3e/12a3e/thumbnail.png","srcSet":"/static/05e28b051ead968072a8006d2b7f1f3e/9d9e0/thumbnail.png 225w,\n/static/05e28b051ead968072a8006d2b7f1f3e/cc174/thumbnail.png 450w,\n/static/05e28b051ead968072a8006d2b7f1f3e/12a3e/thumbnail.png 900w,\n/static/05e28b051ead968072a8006d2b7f1f3e/4dd11/thumbnail.png 1800w","sizes":"(min-width: 900px) 900px, 100vw"},"sources":[{"srcSet":"/static/05e28b051ead968072a8006d2b7f1f3e/3f003/thumbnail.webp 225w,\n/static/05e28b051ead968072a8006d2b7f1f3e/ba134/thumbnail.webp 450w,\n/static/05e28b051ead968072a8006d2b7f1f3e/e7f7d/thumbnail.webp 900w,\n/static/05e28b051ead968072a8006d2b7f1f3e/fc420/thumbnail.webp 1800w","type":"image/webp","sizes":"(min-width: 900px) 900px, 100vw"}]},"width":900,"height":450}}},"hero_image_alt":"thumbnail image"},"id":"d608defc-df76-566b-acb5-42dcb0886582","slug":"posts/77/"}],"pageInfo":{"currentPage":1,"hasNextPage":true,"hasPreviousPage":false,"pageCount":9,"totalCount":86}}},"pageContext":{"skip":0}},
    "staticQueryHashes": ["1903006949","2193720160"]}