May Reading List

Alex O'Callaghan

5월 읽을거리 목록

이번 달에 읽은 흥미로운 글들을 모은 5월 에디션입니다. 지난달 글은 여기에서 읽어보세요.

또 뚫린 npm 패키지

이번 달에도 공급망 공격이 이어졌습니다. 이른바 ‘Mini Shai-Hulud’ 공격으로 여러 TanStack 패키지가 침해됐습니다. Tanner Linsley는 GitHub Actions 설정 취약점을 통해 공격이 어떻게 발생했는지 설명하는 상세한 포스트모템을 공유했습니다. 이후 같은 자격 증명 탈취 스크립트를 이용해 317개의 npm 패키지가 추가로 침해됐는데, 이 스크립트는 탈취한 npm 자격 증명을 이용해 패키지 사이에서 스스로 복제됩니다.

공급망 보안을 강화해야 한다는 점을 다시 한번 강하게 일깨워 줍니다. 공급망 보안을 강화하기 위한 조치가 필요합니다. 저희는 최근 출시된 pnpm v11로 모든 프로젝트를 업그레이드했습니다. pnpm v11은 기본적으로 minimumReleaseAge를 1일로 설정합니다. 대부분의 공격은 빠르게 발견되는 만큼, 일정한 버퍼 시간을 두는 것이 이러한 공격을 방어하는 데 도움이 될 것입니다.

비슷한 보안 맥락에서 이번 달에 Varlock이라는 흥미로운 도구를 알게 됐습니다. 에이전트에게 어떤 시크릿을 사용할 수 있는지에 대한 맥락은 제공하면서도 실제 시크릿 값에는 접근하지 못하게 하는 도구입니다. 시크릿이 평문으로 머신에 남아 있지 않도록 하는 것만으로도, 혹시라도 이런 패키지를 설치하게 됐을 때 자격 증명 탈취 공격을 방어하는 데 도움이 될 수 있습니다.

모델 학습과 Opus 4.8

Anthropic은 자사의 정렬 학습 방식 변화에 대한 블로그 글을 게시했습니다. 윤리적 선택 뒤에 있는 원칙과 추론 과정을 Claude에게 학습시키는 것이 에이전트의 정렬을 어떻게 개선했는지 자세히 설명합니다. 우리가 만드는 스킬에도 이를 어떻게 적용할 수 있을지 생각해 보면 흥미롭습니다. 에이전트가 새로운 상황을 마주했을 때, 원하는 행동의 구체적인 예시만 나열하는 것으로는 충분하지 않기 때문입니다.

OpenAI는 "고블린은 어디서 왔는가(Where the goblins came from)"라는 재미있는 글을 게시했습니다. ‘nerdy’ 성격 기능을 학습시키는 과정에서 의도치 않게 크리처 은유에 높은 보상을 주게 됐고, 결국 모델에게 고블린에 대해 말하지 말라고 지시하는 시스템 프롬프트를 추가해야 할 정도였다고 합니다.

Anthropic은 4.7 출시 한 달여 만인 월말에 Claude Opus 4.8도 출시했습니다.

에이전트로 개발하기

Addy Osmani는 장시간 실행되는 에이전트를 위한 다양한 전략에 대한 글을 게시했습니다. 다만 프로덕션 코드를 작성하는 데 이 전략을 쓰는 것에는 아직 확신이 서지 않습니다.

Birgitta Böckeler가 쓴 코딩 에이전트를 위한 유지보수성 센서 글은 에이전트의 자가 교정을 가능하게 하는 데 필수적인 다양한 가드레일과 검사에 대해 다룬 좋은 글입니다.

Helio Medeiros가 DORA 지표를 활용해 AI 도입 효과를 측정하는 방법에 대해 쓴 글도 읽었습니다. Mintel에서 회고 에이전트 만들기를 통해 제가 체계적으로 시도하려는 접근 방식과 비슷합니다.

흥미로운 생각들

Mark Erikson은 AI 코딩 도구에 대한 회의감과 두려움을 거쳐 도입에 이르기까지의 경험을 담은 긴 글을 공유했습니다.

Tuhin Nair는 시니어 개발자가 자신의 전문성을 소통하는 방법에 대한 글을 썼습니다. 엔지니어가 어떻게 사고하고 비즈니스 전반과 소통하는지에 대해 제가 공감하는 좋은 지점들이 담겨 있었습니다. 빠른 실험을 위한 ‘speed’ 시스템 제안은 매력적으로 들리지만, 실제로 그 주변에 충분한 가드레일을 어떻게 두는지, 그리고 이미 고객에게 판매된 ‘speed’ 버전을 되돌리는 데 얼마나 많은 추가 작업이 필요한지에 대한 세부 내용은 빠져 있습니다.

Lalit Maganti는 첫 번째 질문에 답하지 않기에 대한 글을 공유했습니다. 플랫폼 팀에서 일하거나 다른 엔지니어를 위한 도구를 만드는 사람이라면 누구나 공감할 만한 내용이라고 생각합니다.

웹 플랫폼과 프론트엔드

Chrome 팀은 선언적 부분 업데이트(Declarative Partial Updates)에 대한 글을 게시했습니다. 이 제안은 순서에 상관없는 HTML 스트리밍과 더 효율적인 HTML 삽입을 웹 플랫폼의 일부로 만들려는 시도입니다. 본질적으로 아일랜드(islands) 아키텍처를 웹의 일급 시민으로 만드는 것입니다.

Storybook 10.4가 출시됐습니다. 개인적으로 가장 흥미로웠던 점은 TanStack React에 대한 일급 지원이 추가된 것입니다.

Yangshun Tay는 프론트엔드 개발이 어떻게 변화하고 있는지에 대해 썼으며, 프론트엔드 개발자가 학습과 성장을 어디에 집중해야 할지에 대한 제안을 담았습니다.

또한 D2라는 도구도 알게 됐습니다. 블로그에서 다이어그램을 만들 때 Mermaid를 사용해 왔는데 커스텀 스타일링에 어려움을 겪어 왔거든요. D2는 한번 써 보고 싶은 강력한 대안으로 보입니다.

흥미로운 기술 읽을거리

2004년 RuneScape가 56k 다이얼업으로 멀티플레이어 RPG를 구현한 방법은 2004년 RuneScape 클라이언트가 브라우저의 Java 애플릿에서 효율적인 클라이언트-서버 통신을 위해 어떻게 설계되었는지에 대한 기술적 딥다이브입니다. 흥미로운 글이었고, 저의 초기 게임 기억 중 하나이자 웹이 얼마나 강력한지 처음 알게 해 준 사례이기도 합니다.

Netflix 기술 블로그는 실시간 서비스 맵 구축에 대한 글을 게시했습니다. 기술적 구현에 대한 설명은 다소 부족하고 AI로 생성된 느낌이 강하지만 접근 방식 자체는 흥미롭습니다. 회사에서 에이전트가 여러 시스템을 넘나들 수 있도록 하려고 하면서, 시스템 간 의존성이 얼마나 많이 제대로 문서화되어 있지 않은지, 그리고 그 지식 중 얼마나 많은 부분이 그저 사람들의 머릿속에만 존재하는지를 깨닫고 있어 공감되는 내용이었습니다.

마지막으로 Google 블로그에서 코드 리뷰 답변에 맥락 더하기에 대한 짧은 글입니다. 코드 리뷰 피드백에 어떻게 응답해야 하는지, 피드백을 어떻게 혹은 왜 그렇게 반영했는지에 대한 맥락을 제공하는 방법에 대해 매우 유용한 가이드를 담고 있습니다.

원문은 Alex O'Callaghan님이 에 게재했습니다.

이 글은 muse-spark-1.2-contributor 모델을 사용해 번역했습니다.