1장. 소프트웨어 효율성의 중요성
이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com
소프트웨어 엔지니어의 주요 임무는 유지 관리가 가능하고 유용한 소프트웨어를 비용 효율적으로 개발하는 것입니다.
존 루이스 벤틀리, 효율적인 프로그램 작성 (프렌티스 홀, 1982)
40년이 지난 지금도 개발에 대한 Jon의 정의는 상당히 정확합니다. 모든 엔지니어의 궁극적인 목표는 제품 수명 기간 동안 사용자의 요구를 충족시킬 수 있는 유용한 제품을 만드는 것입니다. 안타깝게도 오늘날 모든 개발자가 소프트웨어 비용의 중요성을 인식하는 것은 아닙니다. 개발 프로세스에 비용이 많이 든다고 말하는 것은 과소평가일 수 있습니다. 예를 들어, Rockstar는 인기 게임인 Grand Theft Auto 5를 개발하는 데 5년과 250명의 엔지니어가 투입되었으며, 그 비용은 1억 3,750만 달러로 추산됩니다. 반면에 사용 가능하고 상용화된 운영 체제를 만들기 위해 Apple은 2001년 macOS를 처음 출시하기 전까지 5억 달러 가 넘는 비용을 지출해야 했습니다.
소프트웨어 제작에 드는 비용이 높기 때문에 가장 중요한 부분에 노력을 집중하는 것이 중요합니다. 예를 들어 코드 복잡성을 객관적으로 줄이지 못하는 코드 리팩토링이나 거의 실행되지 않는 함수에 대한 심층적인 미세 최적화에 몇 주를 소비하는 등 불필요한 작업에 엔지니어링 시간과 에너지를 낭비하고 싶지 않습니다. 따라서 업계에서는 효율적인 개발 프로세스를 추구하기 위해 끊임없이 새로운 패턴을 개발하고 있습니다. 끊임없이 변화하는 요구사항에 적응할 수 있는 Agile Kanban 방법, Kotlin과 같은 모바일 플랫폼용 전문 프로그래밍 언어, React와 같은 웹사이트 구축용 프레임워크 등이 그 예입니다. 모든 비효율이 비용을 증가시키기 때문에 엔지니어는 이러한 분야에서 혁신을 추구합니다.
더욱 어려운 점은 지금 소프트웨어를 개발할 때 미래의 비용도 고려해야 한다는 점입니다. 일부 자료에서는 운영 및 유지보수 비용이 초기 개발 비용보다 더 높을 수 있다고 추정하기도 합니다. 경쟁력을 유지하기 위한 코드 변경, 버그 수정, 인시던트, 설치, 마지막으로 컴퓨팅 비용(전기 소비량 포함)은 우리가 고려해야 하는 총 소프트웨어 소유 비용(TCO) 의 몇 가지 예에 불과합니다. Agile 방법론은 소프트웨어를 자주 릴리스하고 피드백을 더 빨리 받음으로써 이러한 비용을 조기에 파악하는 데 도움이 됩니다.
하지만 소프트웨어 개발 프로세스에서 효율성과 속도 최적화를 배제하면 TCO가 더 높아질까요? 대부분의 경우 애플리케이션 실행을 위해 몇 초 더 기다리는 것은 문제가 되지 않습니다. 게다가 하드웨어는 매달 더 저렴하고 빨라지고 있습니다. 2022년에는 수십 GB의 RAM이 탑재된 스마트폰을 구입하는 것이 어렵지 않았습니다. 7GBps 읽기 및 쓰기 처리량을 지원하는 손가락 크기의 2TB SSD 디스크를 사용할 수 있습니다. 가정용 PC ...