ruby

9 개의 포스트

gitlab5분 읽기큐레이션 요약

AI 에이전트를 활용해 GitLab의 레이트 리미팅을 마이그레이션한 방법

GitLab은 3명의 엔지니어와 AI 에이전트를 활용해 레거시 애플리케이션·Rack 기반 레이트 리미팅을 `labkit-ruby` 단일 구현으로 통합했다. 에이전트는 코드 탐색, 사양 작성, 반복적인 구현과 테스트에는 효과적이었지만, 아키텍처 결정·점진적 롤아웃·관측성 설계·최종 판단은 여전히 사람의 책임이었다. 프로젝트의 성공을 결정한 것은 에이전트 자체보다 명확한 작업 루프, 작은 변경 단위, 점진적 배포, 그리고 실패를 되돌릴 수 있는 운영 체계였다. ## 레거시 레이트 리미팅 통합의 목표 - GitLab에는 다음 두 가지 레이트 리미팅 경로가 수년간 공존했다. - 애플리케이션 수준의 `Gitlab::ApplicationRateLimiter` - Rack 수준의 별도 레이트 리미터 - 목표는 두 시스템을 `labkit-ruby`의 단일 구현으로 통합하는 것이었다. - 새로운 구현은 다음 조건을 만족해야 했다. - 모든 요청에 적용될 만큼 안정적일 것 - 동작을 관측하고 테스트할 수 있을 것 - 장애 발생 시 되돌릴 수 있을 것 - 모놀리스와 다른 환경에서 동일하게 운영할 수 있을 것 - 기존 시스템에는 121개의 레이트 리미팅 키가 존재했다. ## 3명으로 구성된 포드와 AI 에이전트의 역할 - 포드는 세 명의 GitLab 엔지니어를 중심으로 구성됐다. - 모놀리스 측 구현과 롤아웃 담당 - `labkit-ruby`와 아키텍처 담당 - 범위 관리와 초기 gem 코드 작성 담당 - AI 에이전트는 다음 작업을 수행했다. - 코드와 기존 맥락 분석 - 기술 사양 초안 작성 - 범위가 제한된 변경 구현 - 테스트 작성 - 머지 리퀘스트 사전 검토 - GitLab Duo Code Review도 머지 리퀘스트의 품질 검토에 활용됐다. - 사람은 다음을 직접 맡았다. - 작업 범위 결정 - 아키텍처 설계 - 배포 및 롤아웃 판단 - 최종 리뷰와 승인 ## 사양-구현-검증 반복 루프 - 팀은 다음과 같은 엄격한 순서를 적용했다. 1. 에픽과 기존 코드 읽기 2. 사양 작성 3. 적대적 리뷰로 사양의 문제점 검토 4. 차단 이슈가 해결된 뒤 구현 5. 명시적인 증거를 바탕으로 검증 6. 머지 리퀘스트에 대한 적대적 리뷰 7. 필요 시 사람에게 에스컬레이션 8. 머지 - 적대적 리뷰는 최대 두 번의 해결 라운드까지만 허용하고, 이후에는 사람의 판단을 받도록 했다. - 프로젝트에서는 14개의 번호가 매겨진 사양과 30개가 넘는 `labkit-ruby` 머지 리퀘스트가 만들어졌다. - 레거시 코드처럼 맥락 파악과 반복 검증이 중요한 작업에서는 이처럼 제한된 루프가 에이전트 활용에 적합했다. ## 단계적 롤아웃과 에이전트가 잘한 작업 - 첫 번째 코호트에서는 트래픽이 많은 5개 키를 다뤘다. - `pipelines_create` - `notes_create` - `user_sign_in` - 그 외 주요 키 - 트래픽 비율을 `1% → 10% → 50% → 100%`로 단계적으로 높였고, 2026년 5월 5일 100% 배포를 완료했다. - 기존 `ApplicationRateLimiter`와 새 구현의 결과가 일치하는지 확인했지만, 단순히 불일치가 없다는 사실만으로 성공을 판단하지 않았다. - 실제로 제한에 걸릴 정도의 트래픽이 발생하지 않았을 가능성도 있기 때문이다. - 두 번째 코호트에서는 모놀리스 83개와 EE 12개를 포함한 95개 호출 지점을 두 개의 기능 플래그로 통합했다. - 이 작업을 수작업으로 했다면 약 95개의 플래그 변경과 190개의 YAML 수정이 필요했을 수 있지만, 에이전트는 이런 반복적인 코드베이스 전반의 변경에 특히 강했다. ## 관측성은 있었지만 실패 유형을 구분하지 못함 - 두 번째 코호트는 며칠간 섀도 모드에서 기존 구현과 비교되었고, 대체로 일치했다. - 그러나 강제 적용 모드로 전환한 뒤 인증되지 않은 일부 경로에서 식별자가 조용히 유실되는 문제가 발생했다. - 원인은 세 개의 `String` 값이 두 개의 원시 슬롯에 압축되면서 잘못된 값이 식별자를 덮어쓴 구조적 충돌이었다. - 일부 사용자는 짧은 시간 동안 일반적인 오류 메시지를 받았다. - 비교 시스템은 해당 키의 불일치를 이미 감지했지만, 대시보드가 다음을 구분하지 못했다. - 정상적인 동작 차이 - 데이터 구조 충돌 - 사용자에게 영향을 줄 수 있는 치명적 불일치 - 팀은 즉시 강제 적용 플래그를 끄고, 이틀 뒤 긴급 수정 사항을 배포했다. - 문제는 사양, 적대적 리뷰, 구현, 코드 리뷰, 점진적 롤아웃을 모두 통과했으므로, 단순히 “에이전트가 위험하다”기보다는 관측성이 충분히 세분화되지 않았던 것이 핵심 교훈이었다. ## 전체 키 인벤토리 관리의 실패 - 처음에는 다섯 개 코호트로 마이그레이션을 끝낼 계획이었다. - 마스터 브랜치 감사 과정에서 누락된 항목이 발견되어 여섯 번째 코호트를 추가했다. - Claude가 놓친 항목에는 다음이 포함됐다. - EE 전용 `notification_emails` - 일부 EE 레지스트리 항목 - 웹훅 관련 키 3개 - 1초 미만 주기의 `partner_*` 키 3개 - 고립된 어댑터 행 - 총 121개 키 중 17개가 초기 코호트에서 빠져 있었다. - 각 항목이 특정 코호트에 쉽게 들어가지 않는 이유는 있었지만, 목록에서 보이지 않아도 될 이유는 없었다. - 근본적인 실수는 에이전트와 사람이 전체 키 인벤토리 대비 진행 상황을 지속적으로 집계하도록 요구하지 않았다는 점이다. ## Redis 인프라 병목과 운영 판단 - `redis-cluster-ratelimiting`은 4개 샤드 클러스터로 운영됐다. - 마이그레이션으로 사용량이 증가하면서 기존에 알려져 있던 인프라 병목이 다시 나타났다. - 팀은 `maxclients`를 단계적으로 높였지만, 연결 수를 100,000까지 밀어붙이지 않고 75,000에서 중단했다. - 더 많은 연결을 허용하면 각 프라이머리의 CPU가 포화될 수 있었기 때문이다. - 각 샤드는 명령 실행에 하나의 코어를 사용했고, 수직 확장으로 해결할 여지도 제한적이었다. - 따라서 에이전트가 코드를 생성하더라도, 실제 배포 속도와 범위는 인프라 용량과 운영자의 판단에 의해 결정됐다. ## AI 에이전트가 바꾼 병목 - 에이전트 덕분에 코드 작성 자체는 더 이상 가장 느린 단계가 아니었다. - 대신 병목이 다음 영역으로 이동했다. - 사람의 리뷰 처리 용량 - 롤아웃 시점과 범위에 대한 판단 - 운영 중인 시스템을 주의 깊게 관찰하는 능력 - 에이전트는 요청하면 95개의 기능 플래그 같은 반복 작업도 만들어내지만, 그런 설계가 실제로 필요한지는 판단하지 못한다. - 예를 들어 코호트 1 이후 팀은 레이트 리미트마다 별도 기능 플래그를 두는 방식이 과도하다고 판단해 이후 마이그레이션에서는 적용하지 않기로 했다. - 에이전트와 협업하는 방법 자체도 학습이 필요했으며, 때로는 에이전트와 반복적으로 막혀 직접 처리하는 편이 빠르다고 느끼는 순간도 있었다. ## 최종 상태와 실용적인 교훈 - 2026년 6월 중순 기준으로 여섯 개 코호트가 모두 100% 롤아웃됐다. - `ApplicationRateLimiter`의 121개 키가 새 프레임워크를 통해 동작하게 되었고, 감사로 결과를 확인했다. - 이 사례에서 권장할 만한 방식은 다음과 같다. - 에이전트에는 반복적이고 범위가 명확한 변경을 맡긴다. - 아키텍처, 위험 허용 수준, 배포 중단 기준은 사람이 결정한다. - 전체 마이그레이션 대상을 인벤토리로 관리하고 누락 여부를 자동 검증한다. - 단순한 불일치 감지를 넘어 실패 원인과 심각도를 구분하는 관측성을 구축한다. - 기능 플래그와 점진적 롤아웃으로 즉시 되돌릴 수 있게 한다. - 코드 생성 속도가 빨라져도 리뷰와 운영 관찰에 필요한 사람의 시간을 충분히 확보한다.

원문 읽기(새 탭에서 열림)
gitlab4분 읽기큐레이션 요약

GitLab 패치 릴리스: 19.0.1, 18.11.4, 18.10.7 | GitLab Docs

2026년 5월 27일 GitLab은 CE/EE용 패치 릴리스 19.0.1, 18.11.4, 18.10.7을 공개했습니다. 이번 릴리스에는 인증·인가 오류, 정보 노출, 서비스 거부 등 7건의 보안 취약점과 다양한 버그 수정이 포함되어 있어, 영향을 받는 모든 자체 관리형 설치 환경은 즉시 업그레이드하는 것이 권고됩니다. GitLab.com은 이미 패치가 적용됐으며 GitLab Dedicated 고객은 별도 조치가 필요하지 않습니다. ## 릴리스 대상과 업그레이드 권고 - 대상 버전: - GitLab 19.0.1 - GitLab 18.11.4 - GitLab 18.10.7 - CE와 EE 모두에 해당하는 수정이 있으며, 별도 배포 유형이 명시되지 않은 경우 Omnibus, 소스 설치, Helm Chart 등 모든 설치 방식에 영향을 줍니다. - GitLab 패치 릴리스는 일반적으로 매월 둘째·넷째 수요일에 제공되며, 심각한 취약점에는 긴급 패치가 별도로 배포될 수 있습니다. - 보안 취약점의 상세 이슈는 패치된 릴리스가 공개된 뒤 30일 후 이슈 트래커에 공개됩니다. ## Duo AI 워크플로 실행 주체 혼동 - **CVE-2026-4868** - GitLab EE에 영향을 주는 부적절한 접근 제어 취약점입니다. - 인증된 사용자가 특정 조건에서 다른 사용자의 신원으로 Duo AI 워크플로를 실행하도록 만들 수 있었습니다. - CVSS **8.2**로 이번 릴리스에서 가장 심각한 취약점입니다. - 수정 대상: - 18.8 이상 18.10.7 미만 - 18.11 이상 18.11.4 미만 - 19.0 이상 19.0.1 미만 ## Wiki 입력 검증 부족에 따른 서비스 거부 - **CVE-2026-1402** - GitLab CE/EE의 Wiki 기능에서 입력값 검증이 충분하지 않아, 인증된 사용자가 특정 조건에서 서비스 거부를 유발할 수 있었습니다. - CVSS **6.5**입니다. - 17.1부터 18.10.7 미만, 18.11.4 미만, 19.0.1 미만 버전이 영향을 받습니다. ## GraphQL WorkItem API의 비인가 프로젝트 열람 - **CVE-2026-6713** - GraphQL WorkItem API의 권한 검사가 잘못되어, 인증되지 않은 사용자가 비공개 프로젝트를 열거할 수 있었습니다. - 프로젝트 내용 전체가 노출된다는 의미는 아니지만, 비공개 프로젝트의 존재나 식별 정보가 노출될 수 있는 문제입니다. - CVSS **5.3**이며 GitLab CE/EE에 영향을 줍니다. - 수정 버전은 18.10.7, 18.11.4, 19.0.1입니다. ## Duo Workflows 및 Operations 권한 우회 - **CVE-2026-5296** - GitLab EE의 Duo Workflows API 취약점입니다. - 그룹 수준에서 foundational flow가 활성화된 경우, Developer 권한 사용자가 특정 조건에서 워크플로 제한을 우회할 수 있었습니다. - CVSS **4.3**입니다. - **CVE-2026-2601** - GitLab EE Operations 기능의 권한 검사 오류입니다. - Developer 권한 사용자가 다른 프로젝트의 민감한 배포 데이터를 볼 수 있었습니다. - CVSS **4.3**입니다. - 두 취약점 모두 18.10.7, 18.11.4, 19.0.1에서 수정되었습니다. ## CI/CD 및 토큰 인증 관련 취약점 - **CVE-2026-8716** - Pipelines에서 ref 유형 이름을 잘못 해석해, 인증된 사용자가 의도하지 않은 다른 ref의 CI 데이터를 볼 수 있었습니다. - GitLab CE/EE에 영향을 주며 CVSS는 **4.3**입니다. - **CVE-2026-2710** - 차단된 Project Access Token이 특정 인증 엔드포인트를 통해 계속 비공개 리소스에 접근할 수 있었습니다. - GitLab CE/EE에 영향을 주며 CVSS는 **4.3**입니다. - 두 취약점 모두 18.10.7, 18.11.4, 19.0.1에서 해결되었습니다. ## 19.0.1의 주요 버그 수정 - GitLab Credits 대시보드의 평가판 CTA 오류를 수정했습니다. - 작업 토큰의 세분화된 권한에 저장소 쓰기 권한 옵션을 추가했습니다. - Helm 기반 릴리스 환경 QA를 제거했습니다. - API 보안 수정 지침을 릴리스 노트에 반영했습니다. - 19.0 최종 릴리스 관련 변경 사항을 백포트했습니다. ## 18.11.4의 주요 버그 수정 - Ruby 스레드 스케줄러 우선순위 패치를 적용했습니다. - Elasticsearch 인덱서 버전을 5.14.7로 업데이트했습니다. - Zlib를 3.2.3으로 업데이트하고 GitLab Shell을 14.50.0으로 올렸습니다. - Wiki 페이지 이동 시 댓글이 사라지는 문제를 수정했습니다. - 성공한 빌드가 삭제되는 문제와 SyncPolicyWorker 타임아웃 문제를 해결했습니다. - CI/CD 프로젝트 생성 테스트, Epic 보드, swimlane 등 불안정한 기능과 테스트를 수정했습니다. - AI Workflows 범위와 subgroup 프로비저닝 서비스 계정 관련 기능을 보완했습니다. - 파이프라인 취소 및 trace 처리, 다이어그램 프록시의 허용 엔드포인트 전달을 개선했습니다. - 고급 검색 대량 인덱싱에서 기본 데이터베이스 연결을 사용하도록 수정했습니다. - 라이선스 승인 규칙 워크플로의 성능을 개선했습니다. - `num_context_lines=0`일 때 발생하던 off-by-one 오류를 수정했습니다. ## 실용적인 권장 사항 자체 관리형 GitLab 운영자는 현재 지원 중인 브랜치에 맞춰 즉시 19.0.1, 18.11.4 또는 18.10.7로 업그레이드하는 것이 좋습니다. 특히 Duo AI/Workflows, GraphQL WorkItem, Wiki, CI/CD, Project Access Token, Operations 기능을 사용하는 환경은 업그레이드 전까지 권한과 비공개 데이터 접근 로그를 점검해야 합니다.

원문 읽기(새 탭에서 열림)
aws5분 읽기큐레이션 요약

AWS 주간 요약: AWS 2026의 향후 계획, Amazon Quick, OpenAI 파트너십 등 (2026년 5월 4일) | Amazon Web Services

AWS는 2026년 들어 생성형 AI와 에이전트 중심으로 서비스를 빠르게 확장하고 있다. Amazon Quick은 업무 자동화와 콘텐츠 생성을 강화했고, Amazon Connect는 공급망·채용·고객지원·의료를 아우르는 4개 에이전트 솔루션으로 확대됐다. 또한 AWS와 OpenAI는 Bedrock을 통해 OpenAI 모델과 Codex를 AWS 환경에서 사용할 수 있도록 협력을 강화했다. ## Amazon Quick의 업무 자동화 확대 - Amazon Quick은 앱과 연결해 사용자의 업무 맥락을 파악하고 대신 작업을 수행하는 AI 비서다. - 브라우저 없이 로컬 파일, 캘린더, 커뮤니케이션에 접근할 수 있는 데스크톱 앱을 프리뷰로 제공한다. - AWS 계정 없이 개인 이메일이나 Google, Apple, GitHub, Amazon 계정으로 가입할 수 있다. - 채팅 인터페이스에서 다음 콘텐츠를 직접 생성할 수 있다. - 문서 - 프레젠테이션 - 인포그래픽 - 이미지 - Google Workspace, Zoom, Airtable, Dropbox, Microsoft Teams와의 네이티브 통합이 추가됐다. - 자연어로 지시해 비즈니스 데이터와 연결된 앱, 대시보드, 웹 페이지를 만드는 기능도 프리뷰로 제공된다. ## Amazon Connect의 에이전트 AI 사업 확장 Amazon Connect는 고객센터 제품을 넘어 네 가지 업무 영역별 에이전트 AI 솔루션으로 확대됐다. - **Amazon Connect Decisions** - 공급망 계획 및 인텔리전스 솔루션이다. - Amazon의 30년 운영 노하우와 25개 이상의 공급망 도구를 결합한다. - 문제가 발생한 뒤 대응하는 방식에서 벗어나 선제적 계획 수립을 지원한다. - **Amazon Connect Talent** - 대규모 채용을 위한 에이전트형 AI 채용 솔루션이다. - AI 주도 인터뷰, 과학 기반 평가, 일관된 지원자 평가를 제공한다. - 현재 프리뷰로 제공된다. - **Amazon Connect Customer** - 기존 Amazon Connect를 확장한 고객경험 솔루션이다. - 음성, 채팅, 디지털 채널에서 개인화된 고객 응대를 지원한다. - 대화형 AI를 수개월이 아니라 수주 내 구성할 수 있도록 설정 기능을 강화했다. - **Amazon Connect Health** - 환자 확인, 예약 관리, 환자 인사이트, 주변 대화 기반 문서화, 의료 코딩을 자동화한다. - 환자는 더 빠르게 진료를 받고, 의료진은 문서 작업보다 진료에 집중할 수 있도록 설계됐다. ## AWS와 OpenAI의 Bedrock 협력 - AWS와 OpenAI는 최신 OpenAI 모델을 Amazon Bedrock에서 사용할 수 있도록 제한적 프리뷰를 시작했다. - GPT-5.5와 GPT-5.4 등을 기존 Bedrock API를 통해 사용할 수 있다. - 사용자는 별도 인프라나 새로운 보안 모델을 익히지 않고 Bedrock의 보안, 거버넌스, 비용 관리 체계를 그대로 활용할 수 있다. - **Codex on Amazon Bedrock** - OpenAI의 코딩 에이전트를 기존 AWS 환경에서 실행한다. - AWS 자격 증명으로 인증하고, 추론은 Bedrock을 통해 처리한다. - Codex 사용량을 AWS 클라우드 약정에 반영할 수 있다. - Codex CLI, 데스크톱 앱, Visual Studio Code 확장에서 사용할 수 있다. - **Amazon Bedrock Managed Agents** - OpenAI 모델과 AWS 인프라를 결합해 운영 환경용 에이전트를 구축한다. - OpenAI 하니스를 사용해 장시간 작업의 실행력, 추론, 제어 안정성을 높이는 것을 목표로 한다. ## 고성능 EC2 인스턴스 출시 - **M8in·M8ib** - 6세대 Intel Xeon Scalable 프로세서와 6세대 AWS Nitro 카드를 사용한다. - M6in·M6ib보다 최대 43% 높은 성능을 제공한다. - M8in은 최대 600Gbps 네트워크 대역폭, M8ib는 최대 300Gbps EBS 대역폭을 지원한다. - **R8in·R8ib** - 메모리 최적화 인스턴스다. - 대규모 상용 데이터베이스, 데이터 레이크, SAP HANA 같은 인메모리 데이터베이스에 적합하다. - 최대 600Gbps 네트워크와 300Gbps EBS 대역폭을 제공한다. - **C8ine·M8ine** - 네트워크 최적화 인스턴스다. - C6in·M6in 대비 vCPU당 패킷 처리 성능이 최대 2.5배, 인터넷 게이트웨이 경유 네트워크 처리량이 최대 2배 향상됐다. - 가상 방화벽, 로드 밸런서, 5G UPF 등 보안·네트워크 가상 어플라이언스에 적합하다. ## Bedrock AgentCore의 운영 최적화 - Bedrock AgentCore 프리뷰에 에이전트 개선 기능이 추가됐다. - 운영 환경의 추적 데이터와 평가 결과를 분석해 시스템 프롬프트와 도구 설명 개선안을 추천한다. - 추천 결과는 다음 방식으로 검증할 수 있다. - 사전 정의된 테스트 케이스를 활용한 일괄 평가 - 실제 트래픽을 대상으로 한 A/B 테스트 - 모든 추천 사항은 사용자가 승인해야 운영 환경에 반영된다. - 관찰, 평가, 개선의 반복 과정을 자동화해 운영 중인 에이전트의 품질을 높이는 구조다. ## AWS Lambda와 Ruby 4.0 지원 - AWS Lambda가 최신 LTS 버전인 Ruby 4.0을 관리형 런타임과 컨테이너 기본 이미지로 지원한다. - 고급 로깅 기능을 사용할 수 있다. - JSON 구조화 로그 - 로그 레벨 설정 - 대상 CloudWatch 로그 그룹 지정 - 중국 리전과 AWS GovCloud를 포함한 모든 AWS 리전에서 제공된다. ## Amazon Q Developer에서 Kiro로의 전환 - Amazon Q Developer IDE 플러그인과 유료 구독은 2027년 4월 30일 지원 종료 예정이다. - 신규 가입은 2026년 5월 15일부터 차단된다. - 기존 구독자는 계속 사용자를 추가할 수 있지만, 2026년 5월 29일부터 Q Developer Pro에서 Opus 4.6은 사용할 수 없다. - Opus 4.5 및 기존 모델은 유지되며, 최신 코딩 모델인 Opus 4.7 등은 Kiro에서만 제공된다. - AWS 관리 콘솔의 Amazon Q Developer와 문서, 모바일 앱, Slack, Microsoft Teams 등 AWS의 퍼스트파티 경험은 이번 종료 대상이 아니다. ## 실용적인 시사점 - 기업은 Bedrock을 중심으로 OpenAI 모델과 AWS의 보안·거버넌스·비용 관리 체계를 함께 활용할 수 있게 됐다. - 업무 자동화 도입을 검토한다면 Quick은 문서 생성과 사내 도구 연결에, Connect는 고객지원·채용·공급망·의료 프로세스에 적합하다. - 대규모 데이터베이스나 네트워크 집약적 워크로드는 새 M8·R8·C8 계열의 대역폭과 패킷 처리 성능을 기존 인스턴스와 비교해 검토할 만하다. - Amazon Q Developer 사용 조직은 지원 종료 일정과 Kiro 전환 계획을 미리 점검해야 한다.

원문 읽기(새 탭에서 열림)
aws원문

AWS 주간 요약: AWS AI/ML Scholars 프로그램, AWS 서버리스용 에이전트 플러그인 등 (2026년 3월 30일) | Amazon Web Services (새 탭에서 열림)

AWS는 2026 AI & ML Scholars 프로그램을 통해 전 세계 10만 명의 학습자에게 무료 교육 기회를 제공하며 AI 인재 양성에 박차를 가하고 있습니다. 이와 동시에 개발 생산성을 극대화하기 위해 AI 코딩 어시스턴트와의 통합을 강화하고, 서버리스 및 데이터베이스 서비스의 성능과 편의성을 대폭 개선했습니다. 이번 업데이트는 초보자부터 전문가까지 아우르는 교육적 지원과 고성능 워크로드 처리를 위한 기술적 진보를 동시에 포함하고 있습니다. **AWS AI & ML Scholars 및 글로벌 이벤트** - 전 세계 18세 이상 누구나 신청 가능한 '2026 AWS AI & ML Scholars' 프로그램이 시작되었으며, 상위 4,500명에게는 Udacity 나노디그리 장학금이 지원됩니다. - 4월 파리와 런던을 시작으로 전 세계 주요 도시에서 AWS Summit이 개최되어 클라우드 및 AI 기술에 관한 혁신 사례를 공유할 예정입니다. - 개발자 커뮤니티가 주도하는 'AWS Community Days'도 샌프란시스코와 루마니아 등에서 개최되어 기술 워크숍과 실습 기회를 제공합니다. **AI 코딩 도구 연동 및 개발자 경험 개선** - 'Agent Plugin for AWS Serverless' 출시로 Kiro, Claude Code, Cursor 등의 AI 코딩 어시스턴트에서 서버리스 애플리케이션의 구축과 관리가 더욱 간편해졌습니다. - Amazon SageMaker Studio가 Kiro와 Cursor IDE의 원격 연결을 지원하여, 개발자가 익숙한 로컬 환경에서 SageMaker의 확장 가능한 컴퓨팅 자원을 활용할 수 있게 되었습니다. - AWS 관리 콘솔에 시각적 커스터마이징 기능이 추가되어 계정별 색상을 지정하거나 사용하지 않는 리전 및 서비스를 숨김으로써 인지 부하를 줄일 수 있습니다. **서버리스 및 데이터베이스 성능 강화** - Amazon Aurora PostgreSQL에 'Express Configuration'이 도입되어 단 두 번의 클릭으로 몇 초 만에 서버리스 데이터베이스를 생성할 수 있습니다. - AWS 프리티어에 Aurora PostgreSQL이 포함되어 신규 가입자에게 크레딧 혜택을 제공하며, Ruby 개발자를 위한 Aurora DSQL 커넥터도 새롭게 출시되었습니다. - AWS Lambda의 파일 디스크립터 한도가 4,096개로 4배 상향되었으며, 최대 32GB 메모리와 16 vCPU를 지원하여 데이터 집약적인 워크로드를 인프라 관리 없이 처리할 수 있습니다. **Amazon Polly의 양방향 스트리밍 지원** - Amazon Polly에 새롭게 도입된 양방향 스트리밍 API는 텍스트가 생성되는 도중에 실시간으로 음성 합성을 시작할 수 있게 해줍니다. - 이는 LLM(거대언어모델) 응답과 같이 텍스트가 순차적으로 생성되는 대화형 AI 애플리케이션에서 지연 시간을 획기적으로 줄여줍니다. 이번 발표에서 주목할 점은 서버리스 환경의 성능 한계가 대폭 확장되었다는 것입니다. 고성능 컴퓨팅이 필요한 워크로드를 운영 중이라면 상향된 Lambda 리소스를 적극 활용해 보시기 바라며, AI 역량을 쌓고자 하는 분들은 6월 24일 마감되는 AWS AI & ML Scholars 프로그램에 지원해 보실 것을 추천합니다.

datadog원문

테스트 시간을 50% 단축하는 Ruby 라이브러리를 만든 방법 (새 탭에서 열림)

소프트웨어 프로젝트의 규모가 커짐에 따라 발생하는 길고 불안정한 CI 파이프라인은 개발 생산성을 저해하는 주요 원인입니다. 데이터독(Datadog)은 코드 변경 사항과 관련된 테스트만 선택적으로 실행하는 '테스트 영향 분석(Test Impact Analysis)' 기술을 통해 이 문제를 해결하고자 했으며, 성능 오버헤드를 최소화한 Ruby용 Intelligent Test Runner를 구축했습니다. 이를 위해 기존 도구들의 한계를 넘어 Ruby VM 인터프리터 이벤트를 직접 활용하는 C 익스텐션을 개발함으로써 테스트 시간을 절반으로 단축하는 성과를 거두었습니다. **테스트 영향 분석의 개념과 필요성** * CI 파이프라인의 병렬 실행은 속도를 높일 수 있지만, 클라우드 컴퓨팅 비용이 증가하고 관련 없는 코드의 결함으로 인한 테스트 실패(Flaky tests) 문제를 해결하지 못합니다. * 테스트 영향 분석은 각 테스트와 해당 테스트가 실행하는 소스 파일 간의 매핑 정보를 동적으로 생성하여 관리합니다. * Git 커밋에서 변경된 파일과 특정 테스트가 의존하는 파일 목록이 겹칠 때만 해당 테스트를 실행하고, 관련이 없는 경우 건너뜁니다. * 이 시스템은 정확성(필요한 테스트를 거르지 않음), 성능(매 커밋마다 실행 가능할 정도로 낮은 오버헤드), 투명성(사용자 코드 수정 없음)이라는 세 가지 핵심 요구사항을 충족해야 합니다. **기존 Ruby 솔루션의 한계** * **내장 Coverage 모듈:** Ruby 3.1에서 추가된 테스트별 커버리지 수집 기능은 `SimpleCov`와 같은 기존 커버리지 도구와 호환되지 않으며, 성능 오버헤드가 약 300%에 달해 테스트 속도가 4배나 느려지는 단점이 있습니다. * **TracePoint API:** VM 이벤트를 구독하는 `TracePoint` 방식은 사용이 간편하고 기존 도구와 충돌하지 않지만, 여전히 200~400% 수준의 높은 성능 저하를 유발하여 실제 개발 환경에 적용하기 어렵습니다. **Ruby VM 이벤트를 활용한 맞춤형 C 익스텐션** * 성능 최적화를 위해 Ruby 소스 코드의 `coverage.c`와 `thread.c`를 분석하여, C 언어 수준에서 직접 인터프리터 이벤트를 가로채는 방식을 채택했습니다. * Ruby의 C API인 `rb_add_event_hook2`를 사용하여 `RUBY_EVENT_LINE` 이벤트를 등록함으로써, 코드가 실행되는 시점에 즉각적으로 파일 정보를 수집하도록 설계했습니다. * `dd_cov_update_line_coverage`와 같은 콜백 함수 내에서 실행 중인 파일이 프로젝트 루트 내에 있는지 확인하는 필터링 로직을 구현하여 데이터 수집의 효율성을 높였습니다. * 이 접근 방식은 Ruby 인터프리터 내부 메커니즘을 직접 활용함으로써 성능 오버헤드를 획기적으로 낮추고, 대규모 테스트 수트에서도 무리 없이 작동합니다. 규모가 큰 Ruby 프로젝트에서 테스트 속도 정체와 CI 비용 증가 문제를 겪고 있다면, 전체 테스트를 매번 실행하는 대신 테스트 영향 분석 도구를 도입하여 파이프라인의 효율성을 극대화할 것을 권장합니다. 특히 성능이 중요한 환경이라면 Ruby 내장 도구에만 의존하기보다 VM 이벤트를 직접 제어하는 방식이 유효한 해결책이 될 수 있습니다.

figma3분 읽기큐레이션 요약

Figma에서 커스텀 권한

Figma는 기존 Ruby 모놀리스의 `has_access?` 메서드에 모든 권한 로직을 집중시킨 결과, 복잡성·디버깅 난이도·계층형 권한의 한계·데이터베이스 부하 문제에 직면했다. 이를 해결하기 위해 자체 권한 도메인 특화 언어(DSL), 크로스플랫폼 권한 로직 엔진을 구축하고 핵심 권한 규칙을 새 시스템으로 이전했다. 목표는 권한 정확성과 성능을 높이는 동시에 개발자가 안전하게 권한 규칙을 변경할 수 있도록 만드는 것이었다. ## Figma의 권한 모델 - Figma의 협업 기능은 파일과 폴더, 팀, 조직 단위의 복잡한 권한 구조를 필요로 한다. - 파일 접근 방식은 크게 두 가지다. - **역할 기반 접근**: 상위 폴더·팀·조직에서 상속된 역할에 따라 접근한다. - **링크 기반 접근**: 링크를 가진 사용자의 접근 수준, 만료 기간, 비밀번호, 조직 정책 등을 조합해 결정한다. - 파일 삭제 여부, 계층 구조, 조직 제한, 결제 상태 등도 접근 가능 여부에 영향을 준다. - 기존에는 각 ActiveRecord 모델의 `has_access?` 메서드가 사용자와 리소스를 받아 접근 가능 여부를 boolean으로 반환했다. ## 기존 `has_access?` 방식의 한계 - 권한 판단에 필요한 모든 비즈니스 로직이 하나의 긴 메서드에 들어갔다. - 제품 엔지니어가 컨트롤러에서 이 메서드를 적절한 시점에 직접 호출해야 했다. - 작은 변경도 전체 권한 체계에 영향을 줄 수 있어 개발자들이 메서드 수정 자체를 꺼리게 됐다. - 권한 버그는 Figma의 모든 파일에 대한 접근 허용으로 이어질 수 있어 위험성이 컸다. - 디버깅 시 특정 규칙만 분리해 확인하기 어려웠고, 수십 개의 로그를 코드 곳곳에 추가해야 했다. ## 계층형 권한과 boolean 플래그의 문제 - 권한 수준을 정수로 표현했지만, 실제 동작은 여러 boolean 플래그에 의해 달라졌다. - 예시 메서드는 다음과 같은 선택적 인자를 포함했다. - `ignore_link_access` - `org_candidate` - `ignore_archived_branch` - 같은 권한 수준이라도 플래그 조합에 따라 결과가 달라져 개발자가 이해해야 할 경우의 수가 많았다. - 리소스마다 플래그의 의미와 동작이 달라 일관된 권한 모델을 만들기 어려웠다. - 예를 들어 `300` 수준의 편집 권한은 있어도, 특정 조건을 무시한 `100` 수준의 보기 권한 검사는 통과하지 못할 수 있었다. - 따라서 기존 계층 구조만으로는 표현하기 어려운, 서로 독립적인 세밀한 권한이 필요했다. - 새로운 시스템은 기존 계층형 권한을 지원하면서도 비계층적이고 독립적인 권한 체계를 추가할 수 있어야 했다. ## 권한 검사로 인한 데이터베이스 부하 - Figma의 사용자와 리소스 규모가 빠르게 증가하면서 권한 검사가 데이터베이스에 큰 부담을 줬다. - 전체 데이터베이스 부하 중 약 **20%**가 권한 검사에서 발생했다. - 데이터베이스를 수직·수평 확장하는 것만으로는 물리적 한계가 있었기 때문에, 권한 로직 자체가 데이터 계층에 가하는 부하를 줄여야 했다. - 새로운 권한 시스템에는 권한 데이터를 어떻게 조회하고 처리할지에 대한 더 세밀한 제어가 필요했다. ## 자체 권한 DSL과 로직 엔진 - Figma는 외부 솔루션을 우선 검토하는 일반적인 방침과 달리, 권한 문제에는 자체 시스템을 선택했다. - 구축한 구성 요소는 다음과 같다. - 권한 규칙을 명확하게 표현하는 **도메인 특화 언어(DSL)** - 여러 환경에서 동작하는 **크로스플랫폼 권한 로직 엔진** - 기존의 핵심 권한 규칙을 새 시스템으로 이전하는 마이그레이션 체계 - 이를 통해 권한 규칙을 하나의 거대한 조건문으로 관리하지 않고, 독립적이고 조합 가능한 규칙으로 다룰 수 있게 하는 것이 목표였다. - 결과적으로 권한 로직을 제품 기능과 분리하고, 규칙 추가·수정·삭제 시 기존 권한 체계를 모두 다시 이해해야 하는 부담을 줄이려 했다. ## 실용적인 결론 복잡한 권한 시스템에서는 단순한 `if/else` 함수와 호출 규약만으로 규모 확장을 감당하기 어렵다. 권한을 독립적인 규칙으로 모델링하고, 선언적인 DSL과 공통 실행 엔진을 사용하면 정확성·성능·개발자 경험을 함께 개선할 수 있다.

원문 읽기(새 탭에서 열림)
figma3분 읽기큐레이션 요약

피그마 내부: 원격 인

원격 인턴십은 관계 형성과 업무 맥락 습득에 어려움이 있을 수 있지만, 의도적으로 소통 기회를 만들고 적극적으로 질문하면 충분히 의미 있는 경험이 될 수 있다. Jenning Chen은 Figma에서 스타일 피커 개선 프로젝트를 맡아 검색, 색상 스타일 목록 보기, 텍스트 스타일 지표 표시를 구현했으며, 인턴도 실제 사용자 기능의 기획부터 출시까지 주도할 수 있음을 보여준다. 이 과정에서 협업과 피드백, 대규모 데이터 마이그레이션을 경험하며 제품 이해도와 기술 역량을 함께 넓혔다. ## 원격 환경에서의 따뜻한 온보딩 - 입사 직후 Slack 환영 메시지와 온라인 커피챗을 통해 팀원들과 관계를 형성했다. - 동료들이 만든 Figma 환영 카드와 낙서가 담긴 파일을 받으며 대면 없이도 회사의 개방적 문화를 느꼈다. - 원격 근무에서도 신입 구성원이 소속감을 느끼도록 의도적인 환영 절차가 중요했다. ## 원격 인턴십의 우려와 관계 형성 - Slack이나 이메일에서 메시지를 놓치거나 오해할 가능성, 팀원들과 깊은 관계를 만들기 어려울 가능성을 걱정했다. - 회사 전체 쇼앤텔, 기술 강연, 일대일 미팅 등을 통해 다른 팀의 업무와 구성원들의 관심사를 접했다. - 온라인 요리 수업, 방 탈출, 보물찾기 같은 활동은 업무 외적인 관계 형성에도 도움이 됐다. - 원격 환경에서는 우연한 대화가 줄어드는 대신, 조직이 교류 기회를 의도적으로 설계해야 했다. ## 제품 이해도와 질문하는 문화 - 프로젝트를 시작하기 전 Figma의 기능과 디자인 용어를 충분히 익혀야 했다. - 멘토, 팀원, Slack 채널에 적극적으로 질문하며 제품과 업무 맥락을 파악했다. - 문제가 생겼을 때 동료들이 기꺼이 화상 통화를 열어 함께 해결해 주었고, 이는 원격 환경에서도 빠르게 배울 수 있는 기반이 됐다. ## 스타일 피커의 기존 문제 - 스타일 피커는 페인트, 텍스트, 효과, 레이아웃 그리드 스타일을 찾아 적용하는 기능이다. - 스타일 수가 늘어나면서 기존 인터페이스가 복잡해졌다. - 긴 목록을 수동으로 스크롤해야 했고, 특히 색상 스타일의 이름처럼 중요한 정보가 잘 드러나지 않았다. - 사용자가 원하는 스타일을 빠르게 찾고 비교할 수 있도록 개선 요구가 컸다. ## 스타일 피커 개선 기능 - **검색 기능** - 사용자가 몇 글자만 입력해 원하는 스타일을 빠르게 찾을 수 있게 했다. - **색상 스타일 목록 보기** - 기존 격자 보기에서는 가려지던 스타일 이름을 썸네일 옆에 명확히 표시했다. - 목록 보기와 격자 보기를 전환할 수 있도록 했다. - **텍스트 스타일 지표 표시** - 텍스트 스타일을 선택할 때 중요한 글꼴 크기와 줄 높이를 직접 보여줬다. - 스타일을 적용하기 전에 핵심 속성을 확인할 수 있어 선택 시간을 줄였다. ## 여러 기술 스택을 활용한 구현 - 디자인 시스템 팀의 프로젝트 특성상 에디터부터 백엔드까지 전체 기술 스택을 다뤘다. - 에디터에서는 TypeScript와 C++를, 백엔드에서는 Ruby를 사용했다. - 단일 기능을 구현하면서 프론트엔드, 에디터 내부 로직, 백엔드 데이터 처리까지 폭넓은 경험을 쌓았다. ## 출시 과정의 협업과 기술적 난관 - 완성된 기능을 사내 쇼앤텔에서 발표하고 동료들의 피드백을 받았다. - 출시 전 수백만 개의 기존 텍스트 스타일에 글꼴 크기와 줄 높이 메타데이터를 추가하는 마이그레이션이 필요했다. - 해당 마이그레이션만 실행하는 데 하루가 걸렸으며, 리뷰 피드백 반영과 출시 직전 버그 수정도 진행했다. - 구현 과정의 어려움은 제품 구조와 데이터 흐름을 더 깊이 이해하는 계기가 됐다. ## 실용적인 시사점 원격 인턴십이나 신규 프로젝트에서는 정기적인 일대일 미팅, 공개적인 질문 채널, 업무 외 교류 기회를 미리 마련하는 것이 효과적이다. 또한 작은 기능이라도 사용자 문제를 명확히 정의하고, 기존 데이터와 마이그레이션 비용까지 고려하면 실제 출시 가능한 제품으로 발전시킬 수 있다.

원문 읽기(새 탭에서 열림)
datadog원문

Datadog APM을 사용하여 Homebrew 성능 개선 (새 탭에서 열림)

이 글은 Datadog의 소프트웨어 엔지니어링 인턴인 Andrew Robert McBurney가 오픈 소스 프로젝트인 Homebrew의 `brew linkage` 명령어 성능을 개선한 과정을 다룹니다. Datadog의 APM 도구와 플레임 그래프를 활용해 병목 지점을 정확히 파악했으며, 캐싱 메커니즘을 도입하여 패키지 검사 속도를 획기적으로 향상시켰습니다. 결과적으로 106개 패키지 처리 시간을 11.5초에서 182밀리초로 단축하며 프로젝트의 요구 성능을 성공적으로 충족했습니다. ### APM을 활용한 성능 병목 지점 탐색 * Datadog의 `ddtrace` 젬(gem)을 사용해 Homebrew의 루비 코드를 인스트루먼테이션(instrumentation)하여 실행 데이터를 수집했습니다. * 수집된 데이터를 플레임 그래프로 시각화하여 분석한 결과, `LinkageChecker::check_dylibs` 함수가 전체 실행 시간의 대부분을 차지하는 병목 지점임을 확인했습니다. * 이 함수는 패키지의 동적 라이브러리 링크를 확인하고 이를 시스템 라이브러리, 깨진 링크, 선언되지 않은 의존성 등으로 분류하는 복잡한 작업을 수행합니다. ### 멀티스레딩의 한계와 캐싱 전략 도입 * 초기에는 루비의 `Thread` 프리미티티브를 이용한 멀티스레딩으로 성능 개선을 시도했으나, 루비의 **GIL(Global Interpreter Lock)** 제한으로 인해 기대했던 성능 향상을 얻지 못했습니다. * 대안으로 SQLite3를 이용한 온디스크(on-disk) 캐싱 메커니즘을 설계하여, 한 번 계산된 연결성 정보를 영구 저장하고 재사용하도록 했습니다. * SQLite3 기반 캐싱 도입 후, `boost` 라이브러리 검사 시간이 1.01초에서 1.38밀리초로 줄어드는 등 전체적인 명령 처리 속도가 비약적으로 개선되었습니다. ### 의존성을 고려한 PStore 기반 최종 최적화 * Homebrew 유지관리자의 피드백을 반영하여, 외부 의존성인 SQLite3 젬 대신 루비 표준 라이브러리인 **PStore**로 캐싱 구현을 교체했습니다. * PStore는 루비 객체를 파일에 영구적으로 저장하는 해시 기반의 메커니즘으로, 추가적인 외부 라이브러리 설치 없이도 SQLite3와 유사한 성능 이점을 제공합니다. * 이 과정을 통해 대규모 오픈 소스 프로젝트에서는 성능 최적화만큼이나 의존성 관리와 표준 라이브러리 활용이 중요하다는 점을 입증했습니다. ### 실용적인 결론 성능 최적화 시 직관에 의존하기보다 APM과 같은 도구를 사용하여 데이터 기반으로 병목을 찾는 것이 중요합니다. 특히 루비 환경에서는 GIL로 인해 병렬 처리가 제한적일 수 있으므로, 연산량이 많은 작업은 캐싱을 통해 중복 계산을 피하는 것이 가장 효과적인 전략이 될 수 있습니다. 또한, 오픈 소스 기여 시에는 프로젝트의 경량성을 유지하기 위해 가급적 표준 라이브러리(예: PStore)를 활용하는 것을 권장합니다.

datadog원문

데이터독에서 솔루션 엔지니어로 일한다는 것 (새 탭에서 열림)

Datadog의 솔루션 엔지니어는 기술적 전문성과 고객 커뮤니케이션 능력을 결합하여 제품의 기술적 문제를 해결하고 발전을 이끄는 핵심적인 가교 역할을 수행합니다. 이들은 고객의 복잡한 기술 요구사항을 해결하는 동시에 내부 개발 팀과의 긴밀한 협업 및 임베딩 프로그램을 통해 지속적으로 기술 역량을 확장해 나갑니다. 결과적으로 솔루션 엔지니어링 직무는 개인의 적성에 따라 순수 엔지니어링, 제품 관리(PM), 또는 세일즈 엔지니어링 등 다양한 커리어 경로로 성장할 수 있는 유연한 토대를 제공합니다. **솔루션 엔지니어의 기술적 업무 범위** * 고객이 제품 사용 중 겪는 다양한 기술적 문제(에이전트 설정, 통합 구성, 대시보드 시각화, 얼럿 버그 등)를 티켓 시스템을 통해 해결합니다. * 단순한 상담을 넘어 직접 소스 코드를 분석하고, 필요에 따라 버그를 수정하거나 기술적 조사를 수행하는 심도 있는 엔지니어링 역량이 요구됩니다. * 고객의 요구를 정확히 이해하기 위해 멀티태스킹 능력을 발휘하며, 리눅스(Linux), 루비(Ruby), SQL 쿼리 등 폭넓은 기술 스택을 활용합니다. **고객 경험과 제품 개선의 연결** * 실시간 채팅과 기술 콜을 통해 고객과 직접 소통하며, 사용자가 필요로 하는 새로운 기능에 대한 피드백을 가장 먼저 수집하여 제품 개선에 기여합니다. * 문제가 즉각 해결되기 어려운 경우 창의적인 단기 우회 방법(Workaround)을 제시하며, 이 과정을 통해 제품의 내부 구조에 대한 깊은 지식을 습득합니다. * 문서화 작업을 통해 내부 지식을 공유하고, 고객이 스스로 문제를 해결할 수 있는 환경을 구축하는 데 동참합니다. **역량 강화를 위한 임베딩 프로그램과 프로젝트** * '임베딩(Embedding)' 제도를 통해 솔루션 엔지니어가 다른 엔지니어링 팀에 2주간 완전히 합류하여 실제 스프린트 업무를 수행하며 내부 설계 방식과 기술적 도전 과제를 경험합니다. * 업무 숙련도가 높아지면 데모 환경 개선이나 내부 프로세스 자동화와 같은 사이드 프로젝트를 주도적으로 수행할 수 있는 권한이 주어집니다. * 개별 엔지니어의 성향에 맞춰 코딩 중심의 프로젝트나 제품 기능 구현 등 커리어 경로를 맞춤형으로 설계할 수 있도록 지원합니다. Datadog의 솔루션 엔지니어 직무는 빠르게 변화하는 기술 환경에서 고객과 직접 소통하며 실질적인 문제를 해결하고 싶은 개발자에게 적합합니다. 기술적 깊이를 더하는 동시에 제품의 비즈니스적 가치를 함께 고민하고 싶은 분들에게 강력히 추천되는 커리어 경로입니다.