- 에이전틱 코딩 시대에도 소프트웨어 엔지니어 수요는 오히려 증가할 전망이며, 핵심은 코드 작성이 아닌 서비스 운영 역량에 있음
- 코드 작성은 항상 쉬운 부분이었고, 진짜 어려운 것은 장기간 안정적으로 시스템을 운영하는 일
- 노코드와 스프레드시트 사례처럼 비전문가도 도구를 만들 수 있지만, 유지보수와 운영의 부담은 결국 전문 엔지니어링을 요구함
- 사용자는 소프트웨어가 아닌 서비스를 구매하며, 좋은 소프트웨어는 보이지 않게 작동해야 함
- 업타임, 결함율, 복구 속도, 보안 업데이트 등 운영 우수성(operational excellence) 이 미래 경쟁력의 핵심
- 이 모든 요구를 충족하는 역할로 SRE가 소프트웨어 엔지니어링의 중심으로 이동 중
SRE가 가장 많이 채용되는 직군이 될 전망임
- 코드가 저렴해지면 운영 우수성이 승리하는 구조
- 그린필드 데모는 누구나 만들 수 있지만, 서비스를 안정적으로 운영하려면 엔지니어링 역량 필요
- "모두가 그린필드 데모를 작성하고 싶어하지만, 아무도 서비스는 운영하고 싶어하지 않음"
- 소프트웨어 엔지니어링은 단순 프로그래밍이 아니라 시간에 따라 변화하는 시스템을 관리하는 일 임
노코드와 스프레드시트 시대의 교훈
- 회계 담당자 Joe는 매주 10시간이 들던 반복 업무를 노코드 도구와 스프레드시트 매크로로 1시간으로 단축
- 초기에는 성과가 뚜렷했지만, 시간이 지나며 복잡성이 빠르게 증가
- 비즈니스 환경 변화와 회계 규칙 변경, 타임존과 일광절약시간 문제 누적
- 매주 새로운 엣지 케이스가 드러나며 지속적인 손질과 수정 필요
- 결국 Joe는 자신이 만든 시스템에 묶인 상태로 전환됨
- 휴가 중에도 시스템을 신경 써야 하고, 다른 사람에게 운영을 넘기기 어려운 상황
- 코드 실행과 결과 확인 자체가 불안과 긴장의 대상
컴퓨터 질병(The Computer Disease)
- Feynman이 명명한 개념으로, 컴퓨터의 문제는 끊임없이 만지작거리게 된다는 점
- 자동화 자체는 재미있지만, 필요하지 않은 영역까지 자동화하며 복잡성을 키우는 함정 존재
- 진짜 부담은 서비스 운영에 있음
- 안정적으로 동작하게 유지하기
- 대규모 환경에서 문제 없이 확장하기
- 수년에 걸쳐 지속적으로 관리하기
- 서비스 제공은 안정성, 신뢰성과 지속성이 핵심
운영 우수성이 미래인 이유
- 사람들은 소프트웨어를 구매하는 것이 아니라 문제를 해결해 주는 서비스를 고용하는 것
- iCloud의 내부 동작 원리에는 관심 없고, 사진이 기기 사이에서 항상 자동으로 동기화되기를 기대함
- Word, Notion, gDocs가 어떻게 만들어졌는지는 중요하지 않고, 생각을 쓰고 공유하는 경험이 핵심
- 결제 네트워크 구조보다 7달러 말차 라떼가 문제없이 결제되는 결과가 더 중요
- 좋은 소프트웨어는 보이지 않음(존재감 없이 자연스럽게 작동함)
진짜 어려운 엔지니어링 과제들
- 작동하는 데모를 만드는 처음 90%는 쉬움, 나머지 190%가 진짜 중요
- 운영 관점에서 답해야 할 질문들:
-
업타임은 얼마인가
-
결함 발생 비율은 어느 정도인가
- 장애 발생 시 복구까지 걸리는 시간은 얼마나 빠른가
- 문제를 사용자가 인지하기 전에 감지하는가
-
업스트림 의존성을 관리할 수 있는가
- 벤더 문제 발생 시 사용자 불만 전에 감지하는가
- 사용자가 제안한 아이디어 반영에 얼마나 걸리는가
- 엔지니어들이 서로의 시스템을 망가뜨리지 않도록 방지하는가
- 앱이 혼란스러운 덩어리가 되지 않으면서 엔지니어가 계속 전진할 수 있는 시스템이 있는가
-
한 사람의 머릿속에 담기지 않는 규모의 소프트웨어를 다룰 수 있는가
- 12시간 시차가 나는 타임존에서 엔지니어가 잠든 사이 큰 문제가 발생하면, 사용자가 포기하기 전에 고쳐지는가
- 자체 장애와 업스트림 장애에서 복구 가능한가, 중요 데이터가 손실되는가
-
보안 업데이트를 꾸준히 적용하고 있는가
- 사용자 데이터가 유출되지 않는가
-
신뢰할 수 있는가
-
의존할 수 있는가
- 그 신뢰를 뒷받침하는 근거가 있는가
- 필요할 때 소프트웨어가 작동한다는 법적 구속력 있는 보장에 서명할 수 있는가
- 이것들이 진짜 어려운 엔지니어링 과제이며, 코드 작성은 쉬운 부분임