1.1 "사람은 더이상 태어나지 않고 길러진다"
아직도 여기 있네, 그럼 계속 하자. "그리고 너에게 얼마나 깊은 토끼 굴인지 보여줄게" ©
제품 개발 과정이 어떻게 진행되는지 설명할게 — 가장 상위의 전반적인 단계부터 가장 하위의 코드 작성까지. 몇 가지 흥미로운 발견이 기다리고 있을 거야…
현대의 IT 제품은 더 이상 작성되지 않고, 만들어진다. 그것들은 라이브러리, 프레임워크, 타사 프로그램 및 제품에서 조립되거나 아예 원격 유료 또는 무료 인터넷 서비스를 사용해 모아진다.
현대의 제품은 기술, 서비스, 해결책 및 과정의 동물원이나 마찬가지야. 어떤 작업은 사람이 하고, 어떤 작업은 자동화되며, 나머지 90%는 데이터 센터의 클라우드 서비스에 의해 수행된다. 세상은 이미 예전과 많이 달라졌어.
하지만 네가 가장 먼저 주목할 것은 끊임없는 변화일 거야. 더 이상 프로그램을 작성하지 않고, 그저 수정해 나가는 것이야.
1.2 지속적 변화
직장에 들어가면 이미 5년 동안 제품을 개발 중인 20명의 팀에 합류할 거야. 현재 사용자에게는 7번째 버전이 제공되고 있어. 그리고 너의 임무는 이 제품에 변화를 주는 거야. 현재의 활발한 사용자를 놀라게 하지 않도록 작은 변화로.
이게 쉽지 않을 거야, 왜냐하면 제품은 이미 작동 중이니까. 사용자도 있고, 그들은 돈을 지불하고 있어. 아무것도 부서뜨려서는 안 돼. 이미 작동 중인 제품에 변화를 주는 것은 새로운 것에 변화를 주는 것보다 훨씬 더 어렵다. 이를 위해 특별한 표준, 마이그레이션 프로토콜, 유틸리티가 있다. 갑자기 떠오르는 농담 하나:
두 명의 오래된 친구가 만난다: 한 명은 기계공이 되고, 다른 한 명은 외과의사가 되었다... 각자의 인생이 있고, 걱정과 기쁨이 있다... 서로에게 모든 것을 이야기하고, 대화는 급여에 대해 이어진다. 기계공이 말한다: "글쎄, 난 한 달에 30을 받고 아주 만족스러워. 너는 얼마나 받니?". 심장외과의사는 "글쎄, 난 수술 한 번에 약 100K...". 그러자 기계공이 관심을 가진다: "이상하네, 왜 그런 큰 차이가 있지? 똑같은 일 하는 것 같은데 - 부품을 교환하는 거잖아". 그러자 외과의사가 말한다: "그럼 차로 가자, 시동 걸어...". 기계공이 차 시동을 걸고, 외과의사는 보닛을 열고 말한다: "자, 봐, 엔진이 작동하지? 바꿔봐! :)"
기적이 일어나서 네 팀이 전년 내내 처음부터 제품을 작성하고 드디어 출시했다면, 다음에 뭐가 일어날지 알아?
제품이 성공적으로 되면, 제품 소유자는 그것을 발전시키고 싶어 할 거야. 새로운 버전을 출시하거나 어떤 기능을 추가하려 하겠지. 아니면 몇 가지 실험을 하려 할 수도 있어. 그리고 나서, 따라오는 건 뭘까? 변화인 거지.
1.3 제품의 가치
현대 개발의 관점에서 볼 때, 가치가 있는 것은 이미 출시된 코드와 사용자가 사용하는 기능뿐이야. 네가 코드를 작성했다면, 그것이 어디론가 저장되고, 작동하고 있지만 사람들이 사용하지 않는다면, 그 가치가 거의 0에 가까워. 그래서 모든 코드는 최대한 빨리 프로덕션에 배포되어야 해.
너의 코드는 다음 단계들을 거쳐야 해:
- 네가 코드를 작성하고, 그게 작동한다는 것을 확인했어.
- 너의 TeamLead가 그것을 리뷰하고 Git의 메인 브랜치에 추가했어.
- 프로그램 빌드 중의 테스트들이 너가 중요한 것을 부수지 않았다는 것을 보여주었어.
- 통합 테스트가 제품이 필요한 대로 작동한다는 것을 보여주었어.
- 테스터가 이 코드를 확인하고 릴리즈 허가를 주었어.
- 그런 다음, 새로운 버전의 제품을 빌드하고 서버에 릴리즈해야 해.
- 새로운 버전의 제품을 Docker Images에 패키징하고 릴리즈해야 해.
- 아마도 마이그레이션 스크립트를 실행하고 데이터베이스 및/또는 다른 타사 솔루션에 변화를 주어야 할 거야.
- 그런 다음, 서버에서 로그를 수집하여 모든 것이 필요한 대로 작동하고 있는지 확인해야 해.
- 예기치 못한 상황에서, 네가 뭔가를 부쉈다면, 빌드를 롤백하고, 이전 데이터베이스 상태를 복구하며, 사용자가 불안정한 제품 버전으로 작업했을 동안 수행한 작업들을 잃지 않아야 해.
대부분의 회사에서는 이러한 작업이 현재 해결되었어: 새로운 프로세스가 구축되고, 특별한 사람들이 고용되었으며, 특별한 보안 프로토콜과 품질 관리 표준이 도입되었어.
회사가 클수록, 코드가 작성되고 그것이 프로덕션에 도달하여 가치를 창출—사람들에게 혜택을 주기—까지의 시간이 줄어들어.
대부분의 회사에서 코드는 이 과정을 2주 만에 거쳐. 그러나 매주 또는 심지어 매일 릴리즈를 하는 회사도 있어. 특이한 경우는 하루에도 여러 번 릴리즈를 해.
작성된 코드는 아무런 가치가 없어. 오직 프로덕션에서 작동하는 코드만이 가치를 가져다 줘.
GO TO FULL VERSION