기술적 보수가 우리가 더 빠르고 더 나은 확장을 하는 데 도움이 되는 방법

게시 됨: 2022-07-21

Intercom은 미래에 초점을 맞추고 있으며 거기에 도달하기 위해 과감한 조치를 취하고 있습니다. 그러나 우리는 기술적인 결정을 내릴 때 보수적인 것을 좋아합니다.

실제로 기술적으로 보수적이라는 것은 스택에 있는 기존 기술과 프레임워크를 재사용하거나 시도하고 테스트한 패턴과 솔루션을 홍보하는 것과 같습니다. 우리는 해결해야 할 중요한 문제가 고객 또는 비즈니스 가치를 제공하는 문제라는 것을 이해하기 때문에 이러한 친숙함을 소중하게 생각합니다.

새로운 기술을 평가하고 궁극적으로 고객 가치를 거의 제공하지 않는 이미 해결된 운영 문제에 시간을 소비하는 대신 솔루션을 구축, 출시 및 반복하여 제품을 개선하는 데 집중할 수 있습니다.

이것은 제품 원칙을 탐구하는 시리즈 의 여섯 번째 게시물입니다 . 여기에서 Waheed는 "기술적으로 보수적"이라는 엔지니어링 원칙에 대해 설명합니다.

기술적 보수주의에는 많은 장기적 이점이 있습니다.

이 원칙은 " 기술적으로 보수적이어야 함"을 통해 궁극적으로 제약이 없는 동시에 빠르게 확장할 수 있는 방법을 보여주는 몇 년 동안의 몇 가지 예에서 가장 잘 설명됩니다. 저는 이전에 보고 시스템을 설계한 경험에 대해 이야기했으며, 여기에서 우리는 스택에 새로운 데이터 저장소인 Redshift를 도입할 때의 이점을 평가했습니다. 이는 프로덕션에 대해 테스트된 적이 없는 새로운 유형의 데이터베이스를 시스템에 도입하는 것을 의미했을 것입니다. 또한 운영 지식을 구축하고 프로덕션에서 클러스터를 유지 관리하며 Redshift를 대규모로 운영할 때 발생하는 예상치 못한 문제를 처리하는 데 많은 시간을 소비해야 했습니다.

" 기존 인프라를 활용하여 프로세스 속도를 약 6개월에서 단 6주로 단축했습니다."

결국 우리는 익숙한 데이터 저장소가 작업에 더 적합하다고 결정했습니다. Intercom의 검색 기능 대부분을 지원하는 기존 Elasticsearch 인프라를 활용하여 프로세스 속도를 약 6개월에서 단 6주로 단축했습니다.

보고 시스템의 초기 버전은 몇 년 전에 출시되었으므로 이 경우에 기술 보수를 적용함으로써 얻을 수 있는 장기적인 이점에 대해 생각해 볼 기회가 있었습니다.

우리는 고객의 문제를 더 빨리 해결했습니다.

기존 인프라를 사용한다는 것은 새로운 데이터 저장소에 익숙해지고 불가피한 모든 문제를 처리하는 데 시간을 할애하지 않아도 된다는 것을 의미했습니다. 해결해야 할 고객 문제에 즉시 집중할 수 있었고 빠르게 배송되어 배송 시간을 4개월 이상 단축할 수 있었습니다.

우리는 팀의 시간을 최대한 활용했습니다

우리의 데이터 인프라 팀은 여러 기술에 분산되어 있는 대신 작고 친숙한 기술 세트에 계속 집중할 수 있었습니다. 결과적으로 그들은 기존 시스템의 상태를 보장하고 각 기술의 사용을 최적화할 수 있는 더 많은 시간을 가졌습니다.

" 우리의 기술 세트가 상대적으로 작기 때문에 정기적으로 개선이 이루어집니다."

우리는 지속적인 개선의 가치를 복합화했습니다.

기술 집합이 상대적으로 작기 때문에 개선이 정기적으로 이루어집니다. 제품은 이러한 기술을 활용하므로 이러한 개선의 영향은 해당 기술을 기반으로 구축된 모든 항목에 걸쳐 복합적으로 나타납니다. 작은 개선이 전체 제품에 막대한 긍정적인 파급 효과를 줄 수 있습니다.

더 많은 팀이 더 많은 정보를 얻었습니다.

공통 기술을 사용한다는 것은 더 많은 엔지니어와 팀이 자신감을 갖고 함께 작업할 수 있다는 것을 의미합니다. 우리는 시스템의 특정 부분을 소유한 한 팀이 아니라 회사 전체의 팀에서 보고 제품이 자주 개선되는 것을 보았습니다.

원칙은 규칙이 아니라 지침임을 기억하십시오

원칙은 팀을 정렬하는 놀라운 방법이며 Intercom에 좋은 결과를 가져왔습니다. 그러나 그것들을 따르지 않는 것이 더 합리적일 때가 있습니다. 회사가 확장됨에 따라 일부 팀원이 원칙을 독단적으로 따르거나 잘못 해석할 위험이 있습니다. 기술적 보수주의를 기본으로 한다고 해서 결코 새로운 것을 도입하지 않는다는 의미는 아닙니다.

"기술적 보수주의는 이미 스택에 있는 기술을 선호하는 것을 의미합니다. 그러나 그것이 최선의 선택일 경우에만 가능합니다."

기술적 보수주의는 이미 스택에 있는 기술을 선호하는 것을 의미하지만 그것이 최선의 선택일 경우에만 가능합니다. 일부 상황에서는 기존 기술이 적합하지 않을 수 있습니다. 다음 질문에 답할 수 없는 경우 더 자세히 살펴보고 대안을 평가할 수 있습니다.

  • 새로운 도구를 사용하여 비즈니스를 보다 효과적으로 확장할 수 있습니까?
  • 팀이나 조직이 더 빨리 움직이고 가치를 더 빨리 전달할 수 있습니까?
  • 기존 도구로는 해결할 수 없었던 고객 문제를 해결합니까?

이 중 하나라도 "예"라고 답하면 새 도구를 도입하는 것을 고려해 볼 가치가 있습니다. 최근 인터콤에서는 세 가지 질문에 모두 “예”라고 답한 사례가 있었습니다.

사용자 또는 고객의 고객은 인터콤 플랫폼의 핵심입니다. 우리가 성장함에 따라 고객과 Intercom에 저장하는 사용자 데이터의 양에 대한 요구도 커졌습니다. 방대한 양의 사용자 데이터로 인해 당시 현재 사용자 데이터 저장소의 확장 문제가 발생했으며 기존 및 신규 고객을 계속 지원할 수 있도록 현재 솔루션을 재고해야 했습니다. 결국 우리는 스택에 새로운 기술을 도입하게 되었습니다. 이 결정에 도달한 방법은 다음과 같습니다.

우리는 데이터 저장소가 허용하는 것보다 빠르게 확장하고 있었습니다.

우리는 약 5년 동안 MongoDB를 사용해 왔으며 이를 증명할 운영상의 상처가 있었습니다. 실행된 하드웨어 유형에서 실행된 쿼리에 이르기까지 소유 및 실행의 모든 ​​측면을 최적화했습니다. 우리는 수익이 감소하는 지점에 있었고 몇 년 안에 목적에 적합하지 않을 것이며 심지어 회사 성장에 병목 현상이 될 수도 있다는 강력한 신호를 보고 있었습니다.

“사업의 궤적에 대해 정기적으로 생각하고 ' 무엇이 우리를 여기까지 오게 했을까요? '. 이렇게 하면 선택에 수동적이 아니라 능동적으로 대처할 수 있습니다.”

강력하고 미래 지향적인 기술 전략이 핵심입니다. 이 시점에서 우리는 다른 접근 방식을 평가할 필요가 있고 이를 수행할 활주로가 있음을 시사하기에 충분한 데이터를 가지고 있었습니다. 비즈니스의 궤적에 대해 정기적으로 생각하고 "무엇이 우리를 여기까지 오게 했는가? 이렇게 하면 수동적이기보다 선택에 대해 능동적으로 대처할 수 있으며, 새로운 기술 도입에 따른 알려지지 않은 미지의 위험을 완화할 수 있습니다.

우리의 기술이 우리 팀의 속도를 늦추고 있었습니다.

Intercom에서는 더 적은 소프트웨어를 실행하기 위해 노력합니다. 이 경우 알려지지 않은 새로운 기술을 채택하고 있었지만 DynamoDB를 채택한 덕분에 그렇게 할 수 있었습니다.

이전에 우리는 부하 분산을 위한 코드와 함께 MongoDB의 확장을 자체 관리하고 있었습니다. 이는 팀에 상당한 오버헤드였습니다. DynamoDB의 장점 중 하나는 공급업체인 AWS에서 관리한다는 것입니다. 이는 채택하는 데 초기 비용이 들지만 궁극적으로 비용이 절감되고 팀에 엄청난 시간과 노력을 절약할 수 있음을 의미했습니다.

"기술적 보수주의에 대해 독단적이지 않음으로써 우리는 기술을 큰 오버헤드와 제한된 기능으로 대체할 수 있었습니다."

직관에 어긋나는 것처럼 보일 수 있지만 새로운 기술을 도입하면 궁극적으로 소프트웨어를 덜 실행하게 되었습니다. 기술적 보수주의에 대해 독단적이지 않았기 때문에 우리는 오버헤드가 크고 기능이 제한된 기술을 운영상 부담이 덜하고 확장성이 뛰어난 새로운 기술로 교체할 수 있었습니다.

우리는 요구 사항에 대해 무자비했습니다

때로는 MongoDB가 더 일반적이지만 덜 복잡한 쿼리의 가용성과 성능을 위험에 빠뜨리는 복잡하고 값비싼 쿼리를 수행해야 합니다. DynamoDB를 평가할 때 복잡하고 비용이 많이 드는 쿼리는 지원하지 않지만 더 간단하고 일반적인 쿼리에서는 훨씬 더 낫다는 것을 깨달았습니다.

우리는 이미 Elasticsearch를 사용하여 복잡한 쿼리를 수행했으며 마이그레이션의 필요성으로 인해 사용자 저장소에서 필요한 기능을 검토하고 더 신중하게 정의해야 했으며 궁극적으로 단일 사용자 레코드 검색이라는 주요 사용 사례의 성능을 개선할 수 있었습니다.

“기술 대체를 생각할 때, 새로운 기술을 같은 방식으로 사용할 것이라고 당연시하지 마십시오.”

기술 교체에 대해 생각할 때 새로운 기술을 같은 방식으로 사용할 것이라고 당연시하지 마십시오. 귀하의 요구 사항은 시간이 지남에 따라 상당히 변경되었을 수 있으며 나머지 스택은 사용 사례가 더 좁아지도록 발전하거나 성숙할 것입니다. 이는 보다 집중적이고 성능이 뛰어난 기술을 채택하거나 공급업체가 관리할 일부 기술을 오프로드할 수 있는 기회를 제공합니다.

원칙을 비즈니스에 적용하고 그 반대가 되지 않도록 하십시오.

기술적 보수주의는 귀하의 팀이 이미 답변된 질문에 답하는 데 귀중한 리소스를 소비하지 않고 고객 문제를 해결하고 가치를 제공하는 중요한 것에 계속 집중할 수 있도록 하는 훌륭한 도구입니다.

그러나 새로운 기술을 도입하는 것이 나쁘다는 믿음이 너무 강하면 더 적은 소프트웨어를 실행하고 더 쉽고 빠르게 확장하는 데 도움이 되는 기술을 활용하지 못할 수 있습니다. 장기적으로 팀과 비즈니스에 가장 적합한 방식으로 이 원칙을 적용하는 것이 중요합니다.

Intercom의 엔지니어링 팀에 합류하는 데 관심이 있으십니까? 여기에서 더 자세히 알아보고 우리의 열린 역할을 확인하십시오.

채용 CTA - 엔지니어링(가로)