Building towards a new default rendering model for web applications : Vercel에서 CDN을 더 활용하기 위해 엣지에서 성능을 최대화할 수 있도록 Next.14에서 Partial Prerendering(PPR)를 사용하는 방법을 소개하는 글이다. PPR은 <Suspense>를 기준으로 정적 쉘을 생성하고 이 정적 쉘은 엣지에서 바로 사용자에게 제공되는데 이를 통해 Incremental Static Regeneration(ISR)의 안정성과 속도, Server-Side Rendering(SSR)의 동적 기능을 통합한 기능이라고 설명한다.(영어)
A Gentle Introduction to Islands : Deno의 웹 프레임워크인 Fresh은 Islands 아키텍처를 사용하는데 Fresh에서 Islands가 동작하는 방법을 설명한다. 웹사이트에는 JavaScript가 전혀 필요하지 않은 사이트도 있고 아주 일부만 JavaScript가 필요한 사이트도 있는데 많은 JavaScript 프레임워크는 페이지 자체를 컴포넌트로 다루기 때문에 다수의 하이드레이션 코드가 필요해지는데 아일랜드 아키텍처에서는 아일랜드에서는 아일랜드를 인식해서 필요한 부분의 JavaScript 코드만 생성해서 클라이언트에 내려주게 된다.(영어)
Expo Orbit v1: launcher app launched into orbit : Expo에서 Expo Application Services(EAS)로 빌드 후 스낵 프로젝트를 실행하는 과정을 개선하기 위해 지난 8월 Orbit을 공개했는데 반응이 좋아서 프로젝트를 진행하고 이번에 Orbit v1을 공개했다. Orbit을 이용하면 macOS 메뉴바에서 빠르게 빌드하고 실행할 수 있다.(영어)
Why we replaced Pinecone with PGVector : LLM 평가 인프라를 만드는 ConfidentAI에서 벡터 데이터베이스인 Pinecone을 쓰다가 PostgreSQL에서 벡터 검색을 지원하는 PGVector로 갈아탄 이유를 설명한 글이다. Pinecon은 PoC할 때는 편하지만 데이터 동기화 문제와 벡터랑 용량 제한으로 결국 확장성에 문제가 생기고 PGVector의 경우 HNWS 도입으로 성능이 좋아져서 Pinecone을 대체할 만하다고 한다.(영어)
컨트롤 플레인과 분석 서비스는 오리건주 힐즈버러 주변의 3개 데이터 센터에서 실행되고 있었으며 이 3개의 데이터 센터는 자연재해로 영향받지 않도록 충분히 떨어져 있으며 액티브-액티브로 클러스터를 이중화해서 운영할 수 있도록 충분히 가깝게 선택이 돼서 서로 데이터를 동기화하고 있었다.
이 세 곳 중 하나는 PDX-DC04라고 불렀는데 가장 큰 분석 클러스터와 고가용성 클러스터의 1/3이 있었다.
11월 2일 08시 50분(UTC) PDX-DC04의 유틸리티 회사인 포틀랜드 제너럴 일렉트릭(PGE)의 전력 공급 중 하나에 예기치 않은 유지보수가 발생했고 데이터센터를 운영하는 Flexential는 발전기를 돌려서 이를 보완했다.
Flexential는 이를 Cloudflare에 알리지 않았고 발전기와 유틸리티 라인을 같이 가동한 이유를 Flexential이 아직 알려주지 않았다.
11:40(UTC) PGE의 변압기 중 하나에 그라운드 폴트가 발생했고 첫 유지보수 작업으로 인해 발생했을 것으로 추측한다.
이 그라운드 폴트로 인한 보호 조치로 PDX-DC04의 모든 발전기가 중단되어 데이터센터의 전력 공급원이 모두 오프라인이 되었다.
데이터센터에 UPS 장비가 있고 10분 동안 버틸 수 있었지만 4분 만에 UPS에 문제가 생기기 시작했고 데이터센터는 10분만에 발전기를 복구하지도 못했다.
발전기를 복구하는데 3가지 문제가 있었는데 그라운드 폴트로 인한 문제였으므로 발전기에 물리적으로 접근해서 수동으로 재시작해야 했고, Flexential의 접근제어 시스템도 전원 공급이 되지 않아 오프라인 상태였으며, 현장 야간 근무자에 전문가가 포함되어 있지 않고 보안요원과 근무한 지 일주일 된 근무자 뿐이었다.
11:44~12:01(UTC)에 UPS가 방전되어 데이터센터의 모든 전기가 끊겼지만 Flexential은 이를 Cloudflare에 알리지 않았고 전 세계를 연결하는 라우터 2대가 내려간 후 이를 알게 되었고 데이터센터에 팀을 파견했다.
Flexential은 12:28(UTC)에야 처음으로 전원 문제를 공지했다.
고가용성으로 설계되어 다른 두 데이터센터에서 동작해야 했지만 Kafka와 Clickhouse 두 서비스는 고가용성 클러스터에 있지 않고 PDX-DC04에만 있었으면 고가용성 클러스터에 이 두 서비스에 의존성을 가진 서비스가 있었다. 고가용성 테스트도 했었지만 PDX-DC04를 모두 오프라인으로 하는 테스트는 진행하지 않았기에 이러한 의존성이 있다는 걸 놓쳤다.
또한 새로운 제품이나 데이터베이스가 고가용성 클러스터에 통합되도록 요구하는 절차가 부족했다.
12:48(UTC) Flexential은 발전기를 재 가동하고 과부하를 막기 위해 한 회로씩 점진적으로 켜다가 Cloudflare 회로에 문제가 있음을 발견하고 회로 차단기 교체를 시도했지만 보유 차단기보다 고장난 차단기가 많았기에 차단기를 조달해야 했다.
13:40(UTC) 복구 시간을 예측할 수 없었기에 유럽에 있는 재해복구 사이트에 페일오버를 요청했다. 다행히 대부분의 서비스는 나머지 두 데이터센터에서 운영중이었으므로 컨트롤 플레인의 일부만 복구하면 되는 상황이었다.
13:43(UTC) 재해복구 사이트에서 첫 서비스를 시작했다. 과부하가 걸려서 속도 제한을 구현해야 했지만 17:57(UTC) 안정적으로 서비스를 제공할 수 있게 되었다.
신규 제품 등 재해복구 사이트에서 동작하지 않는 서비스가 있었고(대표적으로 동영상 스트림) 서비스 복구를 위해 1) 재해 복구 사이트에서 서비스를 다시 구현하고 2) 고가용성 클러스터로 마이그레이션하는 두 트랙을 동시에 동시에 진행했다.
22:48(UTC) Flexential이 회로 차단기를 모두 교체하고 전력을 복구했음을 확인했지만 하루종일 비상상태로 일한 Cloudflare 팀은 바로 이동하기 보다는 휴식 후 아침에 데이터센터로 가기로 결정했다. 약간 복구가 늦어지지만 추가적인 실수를 줄였다고 생각한다.
11월 3일 새벽부터 PDX-DC04에서 작업을 시작하고 서버를 재구축하는데 3시간이 걸렸다.
How Grafana Labs switched to Karpenter to reduce costs and complexities in Amazon EKS : AWS EKS에서 Kubernetes를 사용하는데 처음에는 Cluster Autoscaler(CA)를 사용하고 있었지만 이후 Karpenter로 갈아탔다. CA는 인스턴스 유형을 여러개 선택하더라도 확장될 때 어느 인스턴스 유형이 선택될지는 제어할 수 없어서 제약이 되었고 스팟 인스턴스를 사용할 때 스팟 인스턴스가 부족하다고 온디맨드로 대신 띄우는 등의 작업을 없었다. 이러한 문제를 해결하기 위해 Karpenter 도입했는데 Karpenter는 Kubernetes 네이티브 리소스를 사용해서 더 유연하게 용량 관리를 할 수 있고 용량 유형도 선택할 수 있었습니다. 적용할 때는 Karpenter가 프로비저너가 없으면 아무일도 하지 않으므로 먼저 Karpenter를 배포하고 CA를 끄면서 Karpenter의 프로비저너와 노드 템플릿을 제공해서 Karpenter로 자연스럽게 교체했다. 적용 이후 유휴 비율이 50% 감소했다고 한다.(영어)
Preview Environments on Kubernetes with ArgoCD : ArgoCD와 Tekton을 이용해서 프리뷰 환경을 구성하는 방법을 설명한다. Argo CD를 이용해서 GitHub의 Pull Request를 모니터링하다가 새 브랜치나 커밋이 올라오면 Tekton으로 빌드하고 Argo CD의 앱을 생성해서 Kubernetes 클러스터에 프리뷰 환경을 배포하는 예시를 보여준다.(영어)
Developer Productivity Engineering at Netflix : Netflix의 생산성 엔지니어링 디렉터인 Kathryn Koehler가 Netflix의 개발자 생산성 엔지니어링에 관해서 설명한 글이다. Netflix의 생산성 엔지니어링 조직은 개발자의 흐름을 방해하는 모든 것을 추상화하려고 하고 있고 티어를 나누어서 지원하고 있다. DORA 등의 정량적 지표로 생산성을 추적하지만 The SPACE of Developer Productivity 활용해서 만족도와 효율성, 성능, 협업에 대한 정성적인 지표도 추적하고 있다. 하지만 설문조사는 어렵기 때문에 개발자들과 능동적인 커뮤니케이션을 하도록 유도하고 내부 플랫폼으로 포장된 길을 제공하려고 노력하고 있다고 한다.(영어)
Octoverse: The state of open source and rise of AI in 2023 : GitHub 데이터를 기준으로 오픈소스 생태계를 살펴보는 Octoverse 리포트가 공개되었다. 올해 보고서에서는 GenAI의 인기가 엄청나게 커져서 Top 10 프로젝트에 처음으로 AI 프로젝트가 들어왔고 Dockerfile과 IaC의 사용량이 많이 증가했으며 처음 오픈소스에 기여한 사람이 가장 많은 해가 되었다. 추가로 HCL 도입은 36% 성장했고 인기 언어는 JavaScript, Python, TypeScript, Java, C# 순이고 처음으로 TypeScript가 Java를 넘어섰다.(영어)
GitHub Transparency Center : GitHub에서 개인정보와 관련해서 정부의 요청이나 DCMA 검토 등의 데이터를 공개하는 투명성 보고서를 2년마다 공개하고 있는데 이전 데이터를 쉽게 볼 수 있도록 투명성 센터를 오픈했다.(영어)
IT 업계 뉴스
Announcing Grok : 일론 머스크가 만든 xAI에서 LLM인 Grok를 공개했고 현재 대기목록에 등록 후 승인받으면 사용할 수 있다. 트위터의 실시간 지식을 보유하고 약간 재치 있는 대답도 한다고 한다.(영어)
Comments