IT는 Cork‑Sniffing Tools를 중단하고 엔지니어링 기본으로 돌아가야 한다

발행: (2025년 12월 22일 오후 05:35 GMT+9)
11 min read
원문: Dev.to

I’m happy to help translate the article, but I’ll need the full text you’d like translated. Could you please paste the content (excluding the source line you already provided) here? Once I have the article text, I’ll translate it into Korean while preserving the original formatting, markdown, and any code blocks or URLs.

Source:

현대 IT는 이상한 문제를 안고 있다: 도구에 대해 끊임없이 이야기하지만, 엔지니어링은 점점 어려워지고 있다.

프레임워크, 플랫폼, 스택, 클라우드, 오케스트레이터, 패턴, 그리고 “베스트 프랙티스”가 대화를 장악한다. 성공은 채택 곡선, 생태계 규모, 이력서 키워드로 측정된다. 그 사이 시스템은 더 복잡해지고, 이해하기 어려워지며, 장애 시 더 취약해지고, 그 어느 때보다 짧은 수명을 갖는다.

이것은 진보가 아니다. 이는 엔지니어링에서 소비주의로의 문화적 퇴보이다.

엔지니어링은 도구 적용이 아니다

성숙한 모든 엔지니어링 분야에서 도구는 종속적이다.

  • 토목 엔지니어는 AutoCAD에 의해 정의되지 않는다.
  • 기계 엔지니어는 CNC 기계에 의해 정의되지 않는다.
  • 항공우주 엔지니어는 CFD 소프트웨어에 의해 정의되지 않는다.

도구는 계산과 실행을 돕는다. 도구가 해결책을 정의하지는 않는다.

엔지니어링은 도구 이전에 시작된다. 다음과 같은 질문이 선행된다:

  • 어떤 문제가 존재하는가?
  • 실제 제약은 무엇인가?
  • 허용 가능한 실패 모드는 무엇인가?
  • 올바름을 만족시키는 가장 간단한 구조는 무엇인가?
  • 이 시스템은 얼마나 오래 살아야 하는가?

IT에서는 이 순서가 종종 뒤바뀐다: “우리는 [X 프레임워크] 를 사용하고 있다 — 이제 이걸로 어떤 문제를 해결할 수 있을까?”
이 역전이 현대 아키텍처 기능 장애의 근원이다.

우리가 잊어버린 엔지니어링 정의

다양한 분야를 가로질러 공통점은 명확하다. 엔지니어링은 다음을 만족하는 시스템을 만드는 학문이다:

  • 정의된 제약 하에서 올바르게 동작한다.
  • 예측 가능한 방식으로 실패한다.
  • 미래의 엔지니어가 이해할 수 있다.
  • 변화에 강인하다.

그 정의에 없는 요소를 주목하라:

  • 새로움.
  • 자체를 위한 유연성.
  • 도구의 정교함.

엔지니어링은 올바름, 명료성, 장수성을 최적화한다. 트렌드와의 정렬이 아니다.

단순함은 위험 제어다

“가장 단순한 해결책”은 종종 오해된다. 이는 코드 양이 가장 적거나, 가장 빠른 프로토타입이거나, 파일 수가 가장 적다는 뜻이 아니다.
이는 올바름을 추론하는 데 필요한 개념이 가장 적은 것을 의미한다.

소프트웨어에서 단순함은 다음을 통해 달성된다:

  • 비즈니스 도메인을 직접 모델링한다.
  • 불변성을 로컬에서 강제한다.
  • 제어 흐름을 명시적으로 유지한다.
  • 자체 비용을 상쇄하지 않는 한 간접성을 피한다.

복잡성은 중립적이지 않다. 모든 추상화는 실패 모드를 도입한다. 모든 프레임워크는 설계하지 않은 동작을 추가한다. 분산 시스템 문제를 해결하고 있지 않다면, 분산 아키텍처는 기능이 아니라 버그다.

도구가 책임을 가린다

도구 중심의 IT 문화는 위험한 착각을 만든다: “프레임워크를 올바르게 따르면 올바름이 자동으로 생긴다.”

그렇지 않다. 프레임워크는 당신의 도메인, 불변성, 경제적 제약을 이해하지 못한다. 그들은 넓은 적용성을 위해 최적화된 일반적인 가정을 인코딩할 뿐, 특정한 올바름을 보장하지 않는다.

실패가 발생하면, 도구 우선 시스템은 모호하게 실패한다: 상태 확신 없이 타임아웃, 가시성 없는 부분 성공, 보증 없는 보상 등.

진정한 엔지니어링 시스템은 크게 그리고 결정적으로 실패한다.

싱글톤 현실

한 가지 중요한 관찰이 종종 무시된다: 모든 IT 시스템은 싱글톤이다.

진정한 A/B 비교가 존재하지 않는다—동일한 트래픽, 사용자, 운영 컨텍스트가 없기 때문에 “도구 A”와 “도구 B”를 비교할 수 없다. 통제 그룹이 없으므로 도구는 거의 검증되지 않는다. 도구는 증명보다는 연관성에 의해 채택된다.

  • 시스템이 잘 동작하면 도구가 공을 받는다.
  • 실패하면 도메인이나 실행이 비난받는다.

성숙한 엔지니어링 분야는 형식적 추론, 보수적 설계, 명시적 가정을 통해 이러한 비검증성을 완화한다. IT는 이를 일화와 인기론으로 대체한다.

경제적 비용: 우연적 복잡성

엔지니어링 규율을 잃는 비용은 추상적인 것이 아니라 경제적인 것이다.

수십 년 전, 상당한 가치를 지닌 기업 시스템은 소규모 팀(5–15명)으로 구축·유지되었으며 수십 년 동안 운영되었다. 오늘날에는 기능적으로 … (이하 내용은 다음 파트에 이어진다)

Comparable systems—bloated by orchestration layers, microservice sprawl, and continuous re‑platforming—often require teams three to four times that size merely to “keep the lights on.”

Accidental Complexity의 폭발이다.

우리는 하드웨어 제약을 인지적 제약으로 교환했다. 우리는 비즈니스 가치를 5배 얻는 것이 아니라, 기본 원칙을 포기함으로써 스스로 만든 복잡성을 관리하기 위해 5배의 비용을 지불하고 있다.

왜 도구가 여전히 지배적인가

도구에 대한 집착은 우연히 생긴 것이 아니다. 이는 조직 문제를 해결할 뿐, 엔지니어링 문제를 해결하지 않는다:

  • 온보딩 속도.
  • 개발자 교체 가능성.
  • 벤더 정렬.
  • 채용 파이프라인.

기업은 종종 운영 효율성(시스템 안정성 및 낮은 유지보수 비용)과 채용 효율성(“Spring Developer”를 바로 투입할 수 있는 능력) 사이에서 트레이드‑오프를 한다.

하지만 이는 잘못된 경제학이다. 채용에서 얻은 효율성은 유지보수의 무게와 전체 재구축의 순환 비용으로 여러 번 상쇄된다. 순수익은 크게 마이너스가 된다. 그럼에도 불구하고 싱글톤 환상은 눈에 보이지 않는 맹점을 만든다: 시스템이 얼마나 안정적일 수 있었는지 보여줄 대조군이 없으면 조직은 혼란을 정상으로 착각하고, 스스로 만든 복잡성을 소프트웨어 고유의 어려움으로 오인한다.

기본으로 돌아가기

“기본으로 돌아가기”는 도구를 거부한다는 의미가 아니다. 다음을 의미한다:

  • 감산 엔지니어링: 성숙한 엔지니어링은 불필요한 부분과 투기적 추상화를 제거함으로써 진보한다.
  • 주권 도메인 모델: 비즈니스 로직이 도구를 결정한다, 그 반대가 아니다.
  • 명시적 상태: 마법 같은 오케스트레이션보다 결정론을 선호한다.
  • 실패를 위한 설계: 시스템의 일부가 실패할 것을 가정하고, 이를 코드에서 명시적으로 처리한다.

결론

IT는 도구가 부족한 것이 아니다. 엔지니어링 절제가 부족한 것이 문제다.

소프트웨어 엔지니어들이 도구에만 집착하고 엔지니어링 기본으로 돌아가지 않는 한, 우연한 복잡성의 순환은 계속될 것이다.

tals — 단순성, 정확성, 명시성, 그리고 책임감 — 시스템은 더 복잡해지면서 신뢰성은 떨어진다.

해결책은 또 다른 프레임워크가 아니다.

그것은 판단이다.

Back to Blog

관련 글

더 보기 »