✍️ 글

Balancing Safety and Velocity in CI/CD at Slack

Slack에서 PR 머지 전에 수행하는 테스트가 점점 늘어감에 따라 테스트 시간이 너무 길어져서 생산성이 떨어지고, 다양한 이유로 실패하는 flaky한 테스트 때문에 머지가 지연되는 경우가 많았다고 합니다.

이를 개선하기 위해서 PR 단계에서는 크리티컬한 테스트만 수행하고, 머지 후에 나머지의 일부를 테스트 한 후에 배포하고, 그 후에 수시간이 걸리는 나머지 테스트를 수행하게끔 파이프라인을 바꾼 이야기입니다.

이렇게 바꾸다보면 배포 속도(velocity)는 올라가지만 아무래도 안정성(safety)는 상대적으로 떨어질 수밖에 없는데, 이를 개선하기 위해서 slack에서 했던 다양한 노력을 알 수 있습니다.

브라우저 기반 코드 에디터 비교

온라인 IDE로 유명한 Replit에서 브라우저용 에디터로 Ace, Monaco, CodeMirror를 도입했던 결과를 설명한 글.

초기에는 Ace 에디터를 사용했고, 역사가 오래된만큼 안정적이었지만, Ace 에디터의 개발사가 다른 회사에 인수되면서 추가적인 개발이 많이 이루어지지 않아서 다른 에디터로 마이그레이션을 하기로 결정했다고 합니다.

그래서 VSCode에 들어가는 Monaco를 사용함으로서 VSCode에서 빠르게 도입되는 기능들을 뽑아먹으려고(?) 했으나, Monaco와 VSCode의 코드가 굉장히 복잡하게 얽혀있어 본인들이 원하는 기능만 사용하기 어려웠고 특히 모바일 지원이 거의 불가능했다고 합니다.

그러던 와중 작년도에 Ace와 마찬가지로 역사가 꽤나 오래된 CodeMirror가 모던한 브라우저 환경에 맞춘 새로운 베타 버전을 공개했고, 이 새로운 버전이 회사의 요구사항에 딱 들어맞아서 도입하기로 결정했다고 합니다. CodeMirror 6는 아직 베타 버전인만큼 본인들이 회사 차원에서 직접 후원하고 개발에 참여하고 있다고 하는데요. 온라인 에디터가 필요한 프로덕트를 개발하고 있다면 한 번 읽어보면 좋은 글인듯 합니다.

Shell Option 하나가 Cloudflare를 느리게 만들다

세계적으로 널리 사용되는 CDN 서비스인 Cloudflare는 사고가 발생했을 때 상세한 내용을 블로그에 잘 공유해주기로 유명한데요.

지난 12월에 일시적으로 Cloudflare의 서비스가 느려지는 사태가 발생했는데, 그것이 어떠한 연유로 발생했는지를 설명해주는 글입니다. 어떤 패치를 도입했다가 롤백하는 과정에서, 중요한 설정 파일이 제대로 업데이트 되지 않아서 속도 저하가 발생했다고 하는데요.

원인은 간단하게도, Shell 스크립트를 작성할 때 PIPEFAIL 옵션을 넣어주지 않아서, 앞선 커맨드가 실패했을 때 에러가 발생하지 않고 계속 진행이 되었기 때문이라고 합니다.

원인이야 간단했지만, 이를 상세하게 공유하는 Cloudflare의 회사 방침이 긍정적으로 보입니다.

📌 북마크

코드 리뷰 피라미드

코드 리뷰를 할 때에 ‘덜’ 중요한 것과 ‘더’ 중요한 것들.

쉽게 수정할 수 있는 코드 포맷팅이나 테스트 같은 것은 최대한 자동화하고, 구현과 API 등에 집중하는 것이 좋다고 이야기합니다.

📰 기술 뉴스

PEP 594 – Removing dead batteries from the standard library

파이썬 3.13에서 더 이상 널리 사용되지 않는 오래된 라이브러리들이 스탠다드 라이브러리에서 제거됩니다. 대표적으로는 80년대에 쓰였고 더 이상은 쓰이지 않는 포맷을 파싱하는 라이브러리(aifc, chunk)라던가, 이제는 다른 서드파티들이 더 잘 할 수 있는, 이미지 헤더를 파싱하는 라이브러리(imghdr) 등이 있습니다.

파이썬은 초기부터 “batteries included” 철학을 가지고 있어서 많은 수의 라이브러리들을 기본 라이브러리로 내장하고 있었는데요. 이제는 인터넷이 연결되지 않은 것이 더 이상한 세상이 되었기에 얼마든지 좋은 서드파티 라이브러리들을 설치할 수 있는 상황에서, 더 중요한 요소들에 집중하고자 한 선택이라고 합니다.

HTTPie가 5만 개의 Star를 잃은 과정

유명한 HTTP API 테스팅 도구인 HTTPie가 얼마 전 깃헙 레포지토리를 실수로 Private으로 바꿔서 5만개가 넘는 Star를 잃은 사건이 있었는데요. 해당 사건이 일어난 이유를 설명하는 글입니다.

결론부터 얘기하면 단순 “실수"인데요. 다른 레포지토리를 Private으로 전환하려 했으나 실수로 HTTPie 레포지토리를 Private으로 바꾸고 말았다고 합니다.

이 글에서는 두 가지 측면에 대해서 아쉬움을 토로하는데요. 첫째는 깃헙에서 레포지토리를 Private으로 바꾸는 행위에 대한 경고를 주긴 하지만, 좀 더 직관적이고 명확한 UI 디자인을 만들어서 실수를 방지했으면 어땠을까 하는 것이고, 두번째는 HTTPie 측에서 이 사건 후 DB 롤백을 해주길 요청했으나 깃헙에서 거절했다는 부분입니다. (사실 두번째는 깃헙 측 입장이 이해되기는 합니다… 이 글에서는 아쉬움을 다소 격정적으로 토로하는 느낌이네요.)

⚙️ 소프트웨어 / 프로젝트

Eruda

모바일 브라우저를 위한 개발자 도구.

태블릿을 이용해서 웹 개발을 하거나, 스마트폰에서 DeX 등의 장치를 이용해서 개발을 할 경우 유용하게 사용할 수 있을 듯 싶습니다.

Regex Vis

정규표현식을 시각화해주고, 웹 UI를 통해서 쉽게 원하는 표현식으로 바꿀 수 있는 사이트.

유사한 서비스가 꽤나 많은데, UI가 간결하고 사용성도 괜찮아 보입니다. 아직 많이 사용해보지는 못했는데, 간단한 정규표현식을 작성할 때 참고해보면 도움이 될 듯 합니다.