개발 플랫폼 엔지니어링에 대한 4가지 고민
플렉스팀 웹 프론트엔드 플랫폼 팀에서 일 한지 3년 가까이 되간다.
연달은 업무의 시작과 끝에서 개발 플랫폼 업무를 보는 관점 같은 것들이 생겨 소개해보려고 한다. 당연히 내 경험 위주다. 나는 스타트업의 매우 한정된 스테이지와 팀 규모만을 경험했기 때문에 다 른 팀 실정에 맞는 이야기는 아닐 수 있다. 내가 무언가 전제하거나, 개념화하여 설명하려는 것이 독자에게 잘 납득이 안 될 수도 있으리라 생각한다.
여기서 말하는 "개발 플랫폼 업무"에는 다음과 같은 것들이 포함된다.
- 여러개의 배포 단위에서 사용하는 공통 구현체 혹은 프레임워크의 변경 혹은 마이그레이션
- 동료 개발자들의 일하는 방식과 생산성에 영향을 끼치는 툴링, 스크립트의 변경 혹은 마이그레이션
- 애플리케이션의 배포, 운영, 코드 관리 방식 등의 개발 인프라단의 변경 혹은 마이그레이션
이제는 일을 시작하거나 진행하는 시점에서 다음과 같은 것들을 고민하게 되었다.
개발자 경험
내가 맡은 일에서 DX를 조금이라도 개선시키거나 악화를 막으려면 어떤 관점으로 접근해야 하는가?
내가 맡은 일들 사이에서 DX는 어느정도 우선순위를 가지는가?
좋은 개발자 경험(Developer eXperience)이 오픈소스에서는 흔한 덕목이다. 많은 오픈소스들이 DX를 무지 신경쓴다고 자처한다.
그러나 스타트업 개발팀의 개발 플랫폼에서 DX 우선순위 높이기 어렵다. 개발자들의 불편보다는 서비스 안정성, 릴리즈 일정, 매출이 더 중요하다. 개발자들의 제품 인도 리드타임에 크나큰 하자가 있는 것이 아니면 투자할 리소스가 생기지 않는다. 내가 CTO쯤 되더라도 비관적일 것이다. 동료들은 개발 과정의 어떤 비효율을 꽤 오랜 시간동안 감수한다. 나는 이것을 주로 정상적인 상황이라고 생각한다.
플랫폼에서는 당장 집중하지 않으면 제품이 선채로 죽어버릴 수 있는 태스크들이 DX보다 우선순위가 높다. 장애 리스크 해결이나 설계 변경에 따른 운영 이슈 줄이기와 같은 일이다. 예전에 썼던 글에서, 회사에서 개발하는 MFA 초기 프레임워크의 DX 수준은 "개발 못해 처먹겠다." 수준보다 조금 높게 유지하려고 했다고 이야기했던 적도 있다. 당장 조금이라도 삐끗하면 즉발로 장애날 수 있는 상황이라 그랬다.
동료 개발자들도 그냥 불편한 정도의 수준이라면 견디는 쪽을 택하게 되거나 불가피하게 그렇게 된다. 당장 스쿼드에서 붙여야 하는 기능만 산더미라서 이슈 제기해서 개선 약속을 받아내는 것이 몹시 피곤하다.
결국 플랫폼 업무 담당자는 DX 개선을 약속하고 리소스를 받아낼 것이 아니라, 공통 플랫폼에 변경을 가하는 순간순간마다 DX 악화를 막고 조금씩 계속 챙겨야 한다. 매우 어렵고 높은 역량을 필요로 한다. 나도 이것 때문에 진짜 고생을 많이 한다.
그럼에도 어떤 DX 악화는 제품이 앞으로 나아가는 과정에서 불가피하다는 것을 인정해야한다. 더 우선순위가 높은 태스크 때문에 DX가 악화될 여지가 생긴다면 동료 개발자들에게 그 이유를 투명하게 밝히고 추후 개선 계획도 짜고 공표한다.