10.1 "이제 사람들은 태어나지 않고, 만들어진다"
아직 여기 있다는 건, 계속해보자는 거겠지. "그리고 내가 너에게 얼마나 깊은 토끼굴이 있는지 보여줄게" (인용)
어떻게 제품 개발이 이뤄지는지 얘기해줄게. 제일 위에서 시작해서, 코드 작성이라는 제일 아래까지 내려가 보자. 아마 몇 가지 흥미로운 발견을 하게 될 거야...
요즘 IT 제품들은 더 이상 쓰지 않아: 그들을 만들어. 라이브러리, 프레임워크, 외부 프로그램 및 제품으로 조립하거나, 유료 또는 무료 인터넷 서비스를 원격으로 사용해.
현대 제품은 기술, 서비스, 솔루션 및 프로세스의 거대한 조합이야. 일부는 사람이 하고, 일부는 자동화됐고, 나머지 90%는 데이터 센터의 클라우드 서비스가 해. 세상은 예전 같지 않아.
하지만 네가 가장 먼저 알아챌 건 끊임없는 변화야. 더 이상 프로그램을 쓰지 않아: 그저 변화를 줘.
10.2 끊임없는 변화
일을 시작하면 20명으로 구성된 팀에 합류하게 될 거야. 이 팀은 이미 5년 동안 제품을 개발해왔어. 현재 사용자는 7번째 버전을 사용할 수 있어. 네 임무는 이 제품에 변화를 주는 거야. 현재의 열성 고객을 놀라게 하지 않을 정도의 작은 변화로.
이게 쉽지 않을 거야. 이미 제품은 작동 중이고, 고객이 있고, 그들은 돈을 지불해. 그래서 아무것도 망가뜨리면 안 돼. 이미 작동 중인 제품에 변화를 주는 건 새로운 제품에 변화를 주는 것보다 몇 배는 어렵거든. 이를 위해 특별한 표준, 프로토콜, 마이그레이션 및 유틸리티가 있어. 농담 한 가지 생각나네:
두 옛 친구가 만나: 한 명은 정비사가 되고, 다른 한 명은 외과의사가 됐어... 각자 삶과 일을 얘기하며, 급여 얘기가 나왔어. 자동차 정비사가 "나는 한 달에 30만원 받아 만족해, 너는?"라고 묻자, 심장 외과 의사가 "나는 한 수술당 약 100만원 벌어..."라고 대답했어. 그러자 정비사가 "이상하네, 우리는 비슷한 일을 하는데 – 부품을 교체하는데 왜 이렇게 차이가 나는지"라고 말했어. 그러자 외과 의사가 한마디 했어: "자, 차를 켜봐"... 정비사가 차를 켜자, 외과 의사가 보닛을 열고 정비사에게 "보이지, 엔진이 작동하는데? 교체해봐! :)".
기적이라도 일어나서 네 팀이 1년 동안 제품을 처음부터 쓰고 그제서야 릴리즈했다면, 다음에 무슨 일이 일어날지 알아?
만약 당신의 제품이 성공한다면, 제품 소유자는 발전을 원할 거야. 새로운 버전을 출시하고, 여러 기능을 추가하려는 걸 거야. 아니면 최소한 몇 가지 실험을 할 수도 있어. 그리고 그 다음은? 변화겠지.
10.3 제품의 가치
현대 제품 개발의 관점에서 보면, 가치가 있는 것은 이미 릴리즈된 코드와 사용자가 사용하는 기능뿐이야. 만약 코드를 작성하고 어딘가에 저장돼 있고 작동하지만 사람들이 사용하지 않는다면, 그 가치는 제로에 가까워. 그래서 모든 코드는 가능한 빨리 production에 도달해야 해.
코드는 이런 단계를 거쳐야 해:
- 작성을 마치고, 작동하는지 확인했어
- TeamLead가 검토하고 Git의 메인 브랜치에 추가했어
- 빌드 중 테스트가 중요한 부분을 부수지 않았다는 걸 보여줬어
- 통합 테스트는 제품이 예상대로 작동한다고 보여줬어
- 테스터가 코드를 확인하고 릴리즈 승인을 줬어
- 그 다음 제품의 새로운 버전을 빌드하고 서버에 릴리즈해야 해
- 새로운 버전을 Docker Images에 패키징해 릴리즈해야 해
- 마이그레이션 스크립트를 실행해 데이터베이스 및 다른 제3자 솔루션에 대한 변경을 해야 할 수도 있어
- 모든 것이 예상 대로 작동하는지 확인하기 위해 서버의 로그를 수집해야 해
- 비상 상황이 발생해 문제가 생겼다면, 이전 상태로 되돌려야 하고, 데이터베이스의 이전 상태를 복원해야 해. 그리고 사용자들이 불안정한 버전의 제품을 사용하는 동안 발생한 활동을 잃지 않아야 해
대부분의 회사에서는 이러한 과제가 이미 해결되었어: 새로운 프로세스가 구축되고, 특별한 사람들이 고용되고, 특별한 보안 프로토콜과 품질 관리 표준이 도입되었어.
회사가 클수록, 코드가 작성되고 production에 도달하여 가치를 창출하기까지 걸리는 시간이 짧아져.
대부분의 회사에서 코드는 이 과정을 2주 안에 거쳐가지만, 매주 혹은 매일 릴리즈하는 회사도 있어. 특별한 경우로는 하루에 여러 번 릴리즈하기도 해.
작성된 코드는 아무런 가치가 없어. 가치를 창출하는 것은 오직 production에서 작동하는 코드야.
GO TO FULL VERSION