회사에서 새 기술 도입할 때 실패하는 패턴 5가지
GraphQL 도입하자고 3개월 싸웠는데, 결국 REST가 맞았다
5년 전, 우리 팀은 GraphQL을 도입하기로 했다. 나를 포함한 시니어들이 강력하게 주장했다. "GraphQL은 미래의 표준이야", "오버페칭 문제를 해결할 수 있어".
3개월 후, 우리는 GraphQL을 포기했다. 이유는 단순했다: 팀이 관리할 수 없었다.
그 이후로 나는 기술 도입의 실패 패턴을 봐왔다. 이 글은 그 패턴들과 어떻게 피할지에 관한 것이다.
패턴 1: Resume-Driven Development (RDD)
이것이 가장 흔한 이유다. "내 이력서에 GraphQL 경험을 넣고 싶어".
특징:
- 최신 기술에 자꾸 눈이 간다
- "남들은 다 쓰는데 우리만 아직도?"라는 생각
- 기술 토크나 컨퍼런스 후 도입 결정
해결책:
- 기술 도입에 명확한 비즈니스 케이스 필요
- 개인의 커리어 개선은 보너스, 메인이 아님
- 도입 2주 후, "왜 이거 쓰는지" 설명할 수 있어야 함
패턴 2: 팀의 스킬 레벨 무시
상황: 팀의 평균 경력이 2년인데, "마이크로서비스 아키텍처를 도입하자"
이건 자살 행위다.
그 당시 우리 팀:
- REST API는 충분히 이해
- 하지만 GraphQL을 모르는 사람이 80%
- 쿼리 최적화 경험이 거의 없음
결과: 3개월 후, GraphQL 쿼리로 인한 N+1 문제 + 캐싱 미흡 = 성능 저하
교훈: 새 기술 도입 전에 팀 스킬 레벨을 정직하게 평가하자.
패턴 3: 마이그레이션 비용 간과
계획: "GraphQL로 전환하는 데 2주면 충분하겠지"
실제: 8주가 걸렸다.
왜?
- 기존 API의 여러 버전 지원해야 함
- 클라이언트도 동시 마이그레이션 필요
- 모니터링 설정 (응답 시간, 쿼리 복잡도)
- 문서 작성
- 팀 교육
실제 비용은 계획의 3-4배가 일반적이다.
해결책: 마이그레이션 비용 * 1.5배 + 여유 비용
패턴 4: 과다 엔지니어링
상황: "우리 서버는 매초 1000개 요청을 처리해야 하니까, 마이크로서비스가 필요해"
현실: 실제 피크 시간의 요청은 100개
또는:
상황: "전 세계 사용자를 위해 CDN이 필수야"
현실: 95% 사용자가 한국
비용: 개발 비용 5배 + 운영 비용 3배 + 팀 역량 낭비
교훈: "지금 필요한가?"와 "미래에 필요할까?"를 구분하자.
패턴 5: 롤백 계획 부재
가장 위험한 패턴이다.
"우리는 성공할 거니까 롤백은 안 준비해도 괜찮겠지?"
틀렸다. 실패하는 프로젝트가 있다.
우리의 GraphQL 도입:
3개월 후: "이건 안 먹히는데?"
하지만: 돌아갈 방법이 없었다
이유: REST API를 완전히 제거했기 때문
올바른 접근:
- 기존 시스템 유지
- 새 시스템과 병행 (1-2개월)
- 점진적 마이그레이션
- 성공 확인 후, 기존 시스템 제거
내가 도출한 기술 도입 체크리스트
1. 문제 정의
[ ] 현재 문제가 명확하게 정의되어 있는가?
[ ] 이 기술이 그 문제를 해결하는가?
[ ] 다른 해결 방법은 없는가?
2. 팀 평가
[ ] 팀의 경험 레벨을 정직하게 평가했는가?
[ ] 교육 시간을 계획에 포함했는가?
[ ] 처음에는 낮은 생산성을 예상했는가?
3. 비용 평가
[ ] 개발 비용을 현실적으로 추정했는가? (3-4배 고려)
[ ] 운영 비용을 계산했는가?
[ ] 기회 비용을 생각했는가? (다른 프로젝트 미룸)
4. 수행 계획
[ ] MVP 버전으로 시작하는가?
[ ] 점진적 마이그레이션인가?
[ ] 롤백 계획이 있는가?
5. 성공 지표
[ ] 명확한 성공 지표가 있는가?
[ ] 언제 평가할 것인가? (1개월 후? 3개월 후?)
[ ] 실패 기준은?
좋은 기술 도입 사례
TypeScript 도입:
- 문제: "자꾸 타입 에러로 버그가 생긴다"
- 팀 평가: JavaScript 초급자 많음 (교육 필요)
- 계획: "새 코드만 TS로 작성"
- 기간: 6개월 (점진적)
- 결과: 버그 50% 감소, 성공
Docker 도입:
- 문제: "개발 환경과 프로덕션 환경이 달라서 버그 발생"
- 팀 평가: Linux 경험 있음
- 계획: "개발 환경부터 Docker화"
- 기간: 2주
- 결과: 온보딩 시간 75% 단축, 성공
결론
새 기술 도입이 실패하는 이유는 기술이 나빠서가 아니다. 계획과 실행이 현실과 맞지 않아서다.
GraphQL은 훌륭한 기술이다. 하지만 우리 팀이, 우리 상황에는 맞지 않았다. 이를 인정하는 데만 3개월이 걸렸다.
지금의 원칙: "최신이 좋은 게 아니라, 팀이 소화할 수 있는 게 좋다."