Renovate Web E2E tests with Playwright Runner : Mercari에서 기존 E2E 테스트에 Jest-Playwright를 사용하고 있었다. 실행은 CircleCI에서 했기 때문에 CircleCI에서는 코드 실행만 하고 Moon이라는 프로젝트를 이용해서 내부 네트워크의 브라우저와 연결해서 테스트를 실행했다. 하지만 Jest-Playwright가 이제 지원 속도가 느려지기 시작했고 Moon을 통해 브라우저를 원격으로 연결하면서 재시도도 어렵고 최종 보고서에도 누락되는 문제가 있었다. Jest-Playwright 대신 Playwright를 사용하기로 하고 내부에 CI를 위한 러너를 제공해서 원격 브라우저 연결을 없앤 형태로 개선했다. 마이그레이션을 끝내기까지 6개월 정도 걸렸고 기존 E2E 테스트는 그대로 두고 새 저장소를 만들어서 테스트 케이스를 업데이트하면서 마이그레이션 했다.(영어)
크롬에서 서드 파티 쿠키를 폐기하기 위한 다음 단계 : 웹사이트에서 서드파티 쿠키에 접근하는 것을 차단해서 사이트 간 추적을 제한하는 추적 보호 기능을 Chrome이 1월 4일부터 테스트한다. 전체 사용자 중 임의의 1%에만 먼저 적용되며 테스트 대상이 되는 사용자는 알림을 받게 될 예정이다.(한국어)
Platform Engineering at Mercari : Mercari에서 플랫폼 엔지니어링을 하면서 배운 내용을 정리한 발표 자료다. 내부 플랫폼 만들면서도 비즈니스가 최우선 가치이고 플랫폼을 지속해서 개선해야 하는 제품처럼 다뤄야 하며 개발팀과 협업해서 효과적으로 우선순위와 기능을 고를 수 있게 하면서도 적당한 거리를 두어 X-as-a-Service가 되도록 해야 한다. 그리고 플랫폼 엔지니어링은 마이그레이션을 항상 동반해야 제대로 효과를 볼 수 있다.(영어)
Open source log monitoring: The concise guide to Grafana Loki Part 1, Part 2, Part 3 : Grafana의 로그 수집 도구인 Loki 5주년을 맞이하여 Loki의 개념과 함께 그동안 어떻게 발전해 왔는지 설명하는 3편의 글이다.(영어)
Loki는 "로그 스트림을 정의하는 Prometheus 스타일의 레이블"을 작은 인덱스로 구축하도록 설계되어 이를 LogQL로 질의한다.
Loki는 높은 카디널리티 레이블값을 지원하도록 설계되지 않았고 오히려 그 반대로 수명이 아주 길고 매우 낮은 카디널리티의 레이블을 위해 구축되었으므로 레이블 수가 적을수록 좋다.
레이블의 키-값 쌍을 통해 Ingester에 샤딩되는데 특정 Ingester에 몰리지 않도록 자동 스트림 샤딩을 도입했다.
Pod 이름 등 카디널리티가 높은 값을 조회하는 문제를 해결하기 위해 그동안 카디널리티가 1시간의 10만 개 미만의 스트림이라면 색인화하고 이 이상이라면 Promtail의 pack 단계에서 로그 라인에 카디널리티를 포함했다. 3.0에 정식으로 포함될 structured metadata를 사용하면 키-값 쌍을 인덱스가 아닌 로그와 함께 저장할 수 있게 되었다.
고유 ID를 검색하는 일이 일반적인 사례라는 것을 깨닫고 Bloom filter를 도입했다.
쿼리를 실행할 때 먼저 쿼리를 더 작은 시간 세그먼트로 분할하고 이를 처리할 양에 따라 샤드로 분리해서 작업 큐에 배치한다.
성능 문제를 해결하기 위해 max_concurrent를 보통 8 정도를 권장하고 문제가 된다면 더 줄이길 권한다. 보통 수직 스케일링보다는 수평 스케일링을 더 권장한다.
tsdb_max_query_parallelism와 split_queries_by_interval로 병렬 처리를 조정할 수 있다. 테넌트가 수집하는 데이터가 많으면 더 많은 병렬처리를 할 수 있다.
모든 쿼리에 metrics.go라는 로그 행을 생성하고 여기에는 실행된 쿼리의 다양한 통계가 있으므로 metrics.go를 조회해서 슬로우 쿼리 등을 찾을 수 있다.
How Meta built the infrastructure for Threads : 23년 7월에 런칭한 Threads가 5일 만에 1억 명의 사용자가 가입했는데 이때 이 인프라를 책임진 두 가지 요소를 설명한다. 기존에 앱 출시를 고려했지만, 실제 출시는 결정 후 2일 만에 출시해야 했고 기존에 인프라 성숙도에 대한 믿음이 있었기에 할 수 있었다.(영어)
ZippyDB는 분산형 키-밸류 디비로 Meta에서 완전 관리형으로 운영되며 Meta의 인프라를 활용하도록 구축되었다. ZippyDB의 리샤딩 프로토콜을 사용하면 일관성/정확성을 보장하면서 다운타운 없이 수평적 샤딩를 늘릴 수 있고 기존 사용에서 100배가 증가하더라도 문제없도록 리샤딩을 계속 개선해 왔다.
XFaaS라고도 부르는 Async는 서버리스 함수 플랫폼으로 엔지니어가 프로덕션 배포까지 걸리는 시간을 줄일 수 있도록 지원하며 HackLang, Python, Haskell, Erlang 등의 언어를 지원한다. Async는 Instagram에서 이미 팔로우 중인 사람을 Threads에서도 팔로우하도록 하는 기능에 중요한 역할을 했고 5일 만에 1억 명의 사용자에게 이 기능을 제공하려면 상당한 처리량이 필요했지만, Async가 이를 잘 처리했다.
Ending Support for the Dagger CUE SDK : CI/CD 파이프라인인 Dagger의 초기 버전은 구성 언어인 CUE를 사용했지만 이후 GraphQL API를 도입하면서 다양한 프로그래밍 언어로 Dagger를 사용할 수 있도록 추가되었다. 이후 CUE용 SDK의 사용이 크게 줄어들었고 23년 12월 14일부터 CUE SDK 지원을 중단하기로 했다.(영어)
볼만한 링크
End of Year Pay Report 2023 : 테크 기업의 연봉을 비교해 주는 levels.fyi에서 2023년 통계 보고서를 공개했다. 2023년에 비해서 연봉 인상률의 추세를 비교해서 보여주고 레벨별 높은 연봉을 주는 회사와 각 중위 연봉을 확인할 수 있다. 참고로 미국에서의 연봉 공개는 연봉에 주식 등도 포함되어 있을 수 있어서 참고해서 봐야 한다.(영어)
Comments