게임 데이는 의도적으로 장애를 발생시켜 팀이 실제 상황에서 어떻게 대응하는지 관찰하고 개선점을 찾는 시뮬레이션 훈련이다. 마치 소방 훈련이나 재해 대피 훈련처럼, 실제 장애가 발생하기 전에 미리 경험해보는 것이다. 특정 기간을 정해놓고 게임 데이(Game Day)를 실행하게 되면, 개발자들은 장애를 대응하기 위해서 일사불란하게 움직인다. 여러 개발자들끼리 힘을 합치면 어떻게든 장애는 해결할 수 있을 것이다. 하지만 미리 사전에 훈련되어있지 않은 장애 대응으로 인해, 특정 권한을 급하게 누구에게 요청해야한다거나, 이 시크릿 키는 누가 들고 있다거나와 같은 이유로 장애 대응이 늦어지는 이유를 확인할 수 있다. 책 소개카오스 엔지니어링은 어느 정도 개발을 접해본 사람에게는 익숙한 키워드일 것이다. 특히 넷플..
최근에 마인크래프트를 팀원분들과 하게 되었다. 올해 새롭게 출시된 엄청나다던 맥북 m4 pro를 구매했기 때문에 쉐이더 모드라는 마인크래프트의 그래픽을 엄청나게 좋게 만들어주는 모드를 설치하려고 했다. 위 보이는 사진은 쉐이더 모드를 설치하기 위한 인스톨러이다. 근데 이게 웬걸, 찾아보니까 MacOS에서 설치하는 방법이 없었다! 절망감에 휩싸이며 포기하려던 찰나, 쉐이더를 설정하는 파일을 봤더니 그 인스톨러의 확장자가 .jar로 끝나는 것을 봤다. 내가 왜 MacOS에서 설치하는 방법이 없었고, 스스로 도전해보지 않았냐면 ARM64 버전 인스톨러가 없기 때문에 '설마 MacOS는 지원을 안 하는 건가?'라고 생각한 것이었다. 그도 그럴게, 게임이라는 카테고리에 있어서는 MacOS는 거의 외딴 섬 취급이기..
최근에 소프트웨어를 깔면서, 그리고 docker image를 빌드하면서 자꾸 ARM과 AMD을 설정해줘야 하는 부분이 있었고, 가끔씩 뭐가 뭔지 까먹는다. 둘이 비슷하기도 하고, 실수해서 잘못 입력하기도 한다. 아무튼, 그러한 작업을 계속하다 보니까 자연스레 관심이 생겼고, 결론적으로는 마인크래프트를 설치하는 과정에서 컴파일러와 인터프리터의 궁극적인 의문점이 생겼다. ( 뭔지는 다음 포스팅에서 다룰 예정 ) 그전에 앞서, ARM와 AMD 아키텍처를 먼저 짚고 넘어가야 할 것 같다. 우리가 흔히 아는 CPU는 아마 Intel일 것이다. 그리고 맥북을 좀 안다면 맥북에서 m1, m2와 같은 CPU를 내고 있다는 것도 알 것이다. CPU 회사들의 제품들 아키텍처는 다음과 같이 정리할 수 있다. 포인트는, in..
"그 사람의 존재로 인해 팀이 전체적으로 나아진다면 책임 개발자다. 그 사람의 존재로 인해 회사가 전체적으로 나아진다면 수석 개발자다. 그 사람의 존재로 인해 업계가 더 발전한다면 최고 개발자다." 이 책은 크게 세 가지 챕터로 나뉘어 있다. Disciplines, Standards, and Ethics. 이 책의 저자 로버트 C.마틴은 각 챕터에서 소프트웨어 엔지니어를 장인(Craftman)이라 생각하며, 꼭 지켜야할 내용들을 정의한다. 책 소개이 책의 챕터는 크게 세 가지로 나뉘어 있는데, 다음과 같다. The Disciplines규율을 의미한다. 소프트웨어를 개발하는 사람이 지켜야 할 규율, 리펙터링을 꾸준하게 하고 보이스카우트처럼 다른 사람이 한 선행에 무언가를 더해서 다시 베푼다. 체크인된 코..
이펙티브는 무엇일까? 그것은 바로 레버리지가 높은 행동을 하는 것을 뜻한다. 투자한 시간 대비 얻을 수 있는 이득이 높은 것을 레버리지가 높다고 표현한다. 책 소개이펙티브 엔지니어, 개발을 꽤 많이 해보았거나 이상적인 개발론에 대한 관심이 있다면 이 책의 내용은 대부분을 알 것이다. 테스트 코드를 쓴다, 온보딩에 신경 쓴다, 남들이 읽을 수 있는 코드를 만들어라 등등.. 지극히 상식적인 이야기를 열거한다. 하지만 대부분의 사람들이 테스트 코드를 왜 써야하나요? 라는 질문에 몇 가지 대답하지 못한다. 나는 대략적으로 코드를 리팩터링 하는 데 쉽고, 안전한 코드를 짤 수 있고, 테스트 커버리지를 통해서 신뢰성을 지킬 수 있다? 이러한 추상적인 이유이다. 이 책에서는 구체적으로 왜 테스트 코드가 필요한지, ..
수신자 제위, 안녕하십니까? 한바탕 폭풍이 지나간 후의 아침입니다. 그동안 별일은 없었는지 평안하신 지 안부를 여쭙니다. 봄날이 다가오고 있습니다. 여러분 모두 건강히 잘 지내고 계시기를 바랍니다. 무너질 것만 같았던 평온한 일상도 어느덧 제자리를 찾아가고 있었고, 이제는 지친 몸을 뉘일 수 있을 정도가 된 것 같습니다. 가장 먼저 이 사실을 당신에게 전하고 싶었습니다만, 제 욕심에 발이 저려 어떻게 하면 보다 더 좋은 전보를 보낼 수 있을까 하며 안부 인사가 늦었습니다. 당신의 이야기를 귀기울여 듣지 않은 것을 후회합니다. 생각해 보면 너무 스스로만을 생각한 것 같습니다. 당신에게 보내는 제 마음의 편지는 좋은 것만으로 가득 채우고 싶었기 때문에 함부로 손에 펜을 쥘 수 없었습니다. 하지만 당신이 원했..
개발자에게 모던(Modern)하다는 것은 무엇일까? 최신 기술의 적극적인 수용? 유연함과 변화에 대한 열려있는 자세? 개인적으로는 실용적인 것이 모던하다고 생각한다. 그런 관점에서 봤을 때, Go 언어는 실로 모던하다. 책 서론에서 생각보다 놀라운 점은, Go 언어는 구글에서 만들어졌고 유닉스와 C의 원조급 개발자인 켄 톰슨(Ken Thompson) 그리고 C를 만들어낸 벨 연구소에서부터 유명했던 롭 파이크(Rob Pike) 등의 인물들이 만든 언어기 때문에, 굉장히 고지식할거라고 생각했다. 조금의 타입 불일치도 허락하지 않는다거나 메모리 관리가 정말 빡빡하다거나, 하지만 생각보다 Golang은 트랜디했다. 예를 들어서 Go의 타입 시스템은 계층 구조가 없다. 인터페이스를 만들고 상속하거나 확장해서 쓰..
최근에 github에서 유명한 레포지토리가 가끔씩 뜨는데, openai에서 제공하는 codex가 떠있는 것을 보았다. 뭔가 하고 살펴보았는데, 터미널에서 사용할 수 있는 LLM이었다. 찾아보니, 터미널에서 사용할 수 있는 경량화된 LLM이었다. 개인적으로 터미널 환경에서 가끔씩 자주 쓰는 명령어지만 파라미터나 순서 등이 헷갈려서 명령어를 사용하기 어려웠던 경우가 있었는데, 사용해보니 명령어 설명이 꽤 친절해서 마음에 들었다. 사실 LLM이 발달하면서 정보를 개발자가 인터넷에서 수동적으로 습득하는 것이 아닌, LLM이 인터넷에서 개발자에게 찾아주는 능동적인 형태로 바뀌며 생산성이 크게 늘었는데, ChatGPT부터 시작해서, Cursor 그리고 나올 것 같다 싶은 terminal에서 쓸 수 있는 툴도 나왔다..