개발자 이민재입니다.

POSTS

2024년 8월 회고 - 안전하게 뜯어고치기

6min read

실수들

    매달 회고할 때 단지 까먹지 않기 위한 몸부림으로 작성해온터라 건조하게 했던 일들만 나열해왔는데, 이번달은 어처구니없이 저질렀던 실수들과, 그 실수로 발생한 오류들을 고친 일들이 먼저 떠올랐습니다.
    먼저, 이번 달에는 예전에 작성했던 코드들을 뜯어고치는 일이 많았습니다. 서버 프로젝트 구조를 멀티모듈 구조로 바꾸면서 중복된 코드들을 패키지 하나에 몰아넣을 수 있는 상황이었는데, 여기서 한 술 더 떠서 중복으로 있던 기존 코드를 삭제하는 것까지 진행했습니다. 서버 코드의 구조가 전반적으로 바뀌는 상황이었던 것입니다. 처음엔 '어차피 IDE 기능으로 기존 코드 사용하는 곳 하나씩 찾아서 새걸로 대체해주는거니까 안전하겠지?'라고 생각했습니다. 그래서 계속 참조를 찾는 단축키 반복해가며 하나하나 새걸로 대체했는데, 여기서 대체할 일부 메서드들을 누락하면서 문제가 발생했던 것이었습니다. 테스트 코드로 아무리 동일한 동작성을 찾아내도 프로덕션 코드에서 이렇게 실수하니 별 도리가 없었습니다. 이외에도 낯부끄러운 실수들을 많이 저질러서, 다시 한 번 리팩터링 책에 나오는 기법들을 찾아보았습니다.
    아무래도 이번 달엔 매너리즘에 빠져 코드를 변경했던 것 같습니다. 1:29:300 법칙인 하인리히 법칙을 다시금 머릿속에 새겨야겠습니다.

앱 Fastlane 적용, 프론트엔드 CI/CD 적용

    이번 달엔 서비스하는 앱의 배포를 자동화하기 위해 Fastlane을 적용했습니다. 현재 앱을 React Native로 개발하고 있는데, Codepush의 범위를 벗어난 업데이트의 경우 앱을 배포할 때 버전을 수동으로 올려야 했습니다. 이런 번거로움을 해소하기 위해 Fastlane을 적용했습니다. 확실히 버전 올리고, 빌드하고, 배포하는 사이클을 자동화시키니 개발 부담이 많이 줄었습니다. 사실 앱 배포 시에 Testflight(iOS의 경우)을 사용하지 않아 내부 테스트도 진행하지 못하고 있었는데, 이번에 Fastlane 추가한 김에 Testflight 설정까지 완료해서 회사 내부 테스트도 진행할 수 있게 설정했습니다.
    또, 앱에서 보여주는 웹뷰 배포도 자동화하기 위해 Github Actions로 CI/CD를 적용해봤습니다. node.js 웹서버 배포 자동화에 익숙했던 것도 있고, 이미 배포 스크립트가 있었던 상황이라 1시간 정도 소요해서 금방 배포 파이프라인을 작성할 수 있었습니다. 항상 느끼지만 CI/CD 파이프라인은 없는 상태에서 하나 만들어두면 '이걸 왜 이제야했나' 싶을 정도로 효과가 좋은 도구인 것 같습니다.

읽은 책 - 아이디어 불패의 법칙

    8월에는 '아이디어 불패의 법칙'이라는 책을 추천받아 읽고 있습니다. 새롭게 떠오른 아이디어가 유효한 아이디어인지(책에서 표현하기로는 '될 놈'인지) 검증하는 방법을 설명하는 책입니다.
    저자가 여러 사례를 들어가며 자세히 설명하는 프리토타입(pretotype, pretotyping)이라는 개념이 인상적입니다. 저자가 주장하는 핵심은, 새로 생각해 낸 아이디어를 추상적인 상황 아래에 계속 두지 않고, 빠르게 실험해보는 것이 중요하다는 것입니다. 이런 신속함은 숫자로 구체화시킨 가설(xyz가설)이 바탕이 되어야 하고, 이 가설을 빠르게 검증하는 일련의 방법들이 바로 프리토타입입니다. 책에서 나오는 기법들은 개발할 때 흔히 사용했던 개념증명(PoC)이라는 방식과도 상응하는 부분이 있어, 배울 점이 많았습니다. 결국 둘 다 가설 - 테스트(실험) - 실행 사이클의 속도를 극대화시켜 손해를 최소화하는 것이 공통점으로 보였습니다. 읽자마자 바로 팀원들에게 소개했고, 여기 나온 방법들을 시험삼아 적용해보자고 제안할 정도로 좋은 책이었습니다.
    이 책을 읽으면서 다시 한 번 머리를 개조하는 기분입니다.