내가 이해하려는 것

발행: (2025년 12월 16일 오전 09:10 GMT+9)
6 min read
원문: Dev.to

Source: Dev.to

Background

저는 중간 규모 회사의 소프트웨어 엔지니어이며, 경력을 시작할 때는 주로 Ruby on Rails 로 웹 애플리케이션을 만들었습니다. 시간이 지나면서 다른 프레임워크와 프론트엔드 기술을 사용해 SaaS 제품을 구축했습니다.

프레임워크 덕분에 빠르게 움직일 수 있었습니다: 명확한 구조와 익숙한 패턴을 제공했고, 뭔가를 이해하고 있다는 느낌을 주었습니다. 대부분의 복잡성을 대신 처리해 주었고, 저는 그것에 대해 크게 의문을 제기하지 않았습니다.

Growing Awareness

어느 순간 그 느낌만으로는 충분하지 않게 되었습니다. 제가 만든 시스템은 동작했지만, 특정 상황에서는 그 이해가 얕게 느껴졌습니다. 코드는 설명할 수 있었지만, 시스템이 실제로 실행될 때 무슨 일이 일어나는지는 항상 설명하지 못했습니다. 요청, 응답, 컨트롤러, 서비스 관점에서는 편했지만, 재시도, 백그라운드 작업, 부분 실패, 혹은 재시작 후 동작이 달라지는 이유와 같은 것들은 설명하기가 훨씬 어려웠습니다.

프로덕션 이슈가 발생하면, 답은 보통 제가 익숙하게 생각하던 시스템 영역 밖에 있었습니다. 현대 프레임워크는 많은 부분을 조용히 대신 처리해 주는데, 이는 나쁜 의미가 아니라는 점에서 소프트웨어가 시간이 지나면서 실제로 어떻게 동작하는지를 가려버립니다. 그 커튼 뒤를 들여다보지 않으면, 진정한 직관을 기를 수 없습니다.

Where Software Is Going

소프트웨어의 미래에 대해 더 많이 생각하기 시작했습니다. 미래가 순수하게 요청‑응답, 즉각적인 피드백, 완벽한 조건만을 전제로 할 것 같지는 않습니다. 점점 더 많은 시스템이 지연이 존재하고, 실패가 정상이며, 일들이 즉시 일어나지 않거나 기대한 순서대로 진행되지 않는 환경에서 동작합니다.

이러한 고민은 분산 시스템에 관한 실용적인 논의와 자율 시스템 혹은 우주 탐사에 대한 추상적인 대화에서 나타납니다. 스타워즈 팬으로서 달이나 화성에 가서 사람们이 살게 될 것이라는 이야기를 떠올리게 됩니다. 하지만 우리는 소프트웨어가 그런 환경에서 실제로 어떻게 동작할지, 메시지가 지연되고 연결이 끊기며 실패가 정상적인 운영의 일부가 될 때 시스템이 어떻게 통신할지에 대해 거의 생각하지 않습니다.

Starting a Learning Log

제가 사용해 오던 도구들을 포기하거나 웹 개발과 프레임워크에서 벗어나고 싶지는 않다는 것을 깨달았습니다. 대신 그 도구들이 추상화하고 있는 것이 무엇인지 이해하고 싶었습니다.

그래서 이것은 시리즈의 시작입니다—튜토리얼 시리즈도 아니고, 하룻밤 사이에 시스템 엔지니어가 되는 방법에 대한 가이드도 아닙니다. 이것은 학습 로그이며, 시간이 흐르고 제약이 존재하며 실패와 불확실성이 있는 상황에서 소프트웨어가 어떻게 동작하는지를 더 잘 이해하려고 할 때 제 사고가 어떻게 변하는지를 기록하는 장소입니다.

때때로 글은 짧은 메모가 될 수도 있고, 때로는 긴 성찰이 될 수도 있으며, 이전에 옳다고 믿었던 아이디어에 대한 수정이 될 수도 있습니다. 저는 모든 것을 알지는 못하지만, 지금보다 훨씬 더 많이 이해하고 싶고, 그 과정을 신중하고 정직하게, 그리고 가능한 한 실제 세계에서 소프트웨어가 동작하는 방식에 가깝게 진행하고 싶습니다.

Back to Blog

관련 글

더 보기 »