학생으로서 백엔드 엔지니어링에 대해 생각하는 방식

발행: (2026년 1월 7일 오후 02:00 GMT+9)
6 min read
원문: Dev.to

I’m happy to translate the article for you, but I’ll need the full text you’d like translated. Could you please paste the content (or the portions you want translated) here? I’ll keep the source line exactly as you provided and translate the rest into Korean while preserving all formatting, markdown, and code blocks.

Introduction

When I started learning backend development, I initially thought it was just about writing APIs and connecting databases. But as I progressed through my second year of engineering, subjects like Operating Systems, Computer Networks, and DBMS completely changed how I think about backend systems.

This post is not a tutorial. It’s about how learning core CS fundamentals shaped my mindset as a backend‑focused student engineer—and how it helped me understand real‑world systems better.

왜 백엔드 엔지니어링에 관심을 가지게 되었는가

I’ve always been more curious about what happens behind the scenes:

  • 요청이 어떻게 처리되는지
  • 데이터가 어떻게 효율적으로 저장되고 조회되는지
  • 시스템이 부하 하에서 어떻게 확장되는지
  • 실패가 어떻게 우아하게 처리되는지

Backend engineering felt less about visuals and more about logic, reliability, and correctness, which naturally aligned with how I like to think.

운영 체제가 내 시각을 바꾼 방법

Studying Operating Systems gave me clarity on things I was blindly using before.

Key concepts

  • Processes vs. threads
  • Context switching
  • Synchronization and race conditions
  • Memory management

These made backend concepts feel real. When I later worked with goroutines, worker pools, or concurrent request handling, I wasn’t just using features—I understood why concurrency needs discipline and what can go wrong if it’s misused. OS taught me that performance and correctness are deeply connected.

컴퓨터 네트워크가 API를 이해하게 만들다

컴퓨터 네트워크를 배우기 전에는 HTTP가 마법처럼 느껴졌습니다.

학습 후:

  • TCP vs. UDP
  • 지연 시간 및 패킷 손실
  • DNS 해석
  • 클라이언트‑서버 통신

API가 “엔드포인트”가 아니라 네트워크 대화가 되었습니다. 데이터가 네트워크를 통해 어떻게 이동하는지 이해하면서 다음을 할 수 있게 되었습니다:

  • 더 깔끔한 API 설계
  • 타임아웃 및 재시도 고려
  • 모든 요청의 비용을 인식

그 결과 자신감이 아니라 더 신중해졌습니다.

DBMS가 나에게 데이터에 대한 존중을 가르쳐 주었다

DBMS는 전환점이었다.

다음과 같은 개념들

  • Normalization
  • Indexing
  • Transactions
  • Isolation levels
  • Crash recovery

은(는) 내가 데이터베이스를 보는 방식을 완전히 바꾸어 놓았다. 데이터베이스를 블랙 박스로만 여기던 내가 이제는 다음을 생각하게 되었다:

  • 왜 쿼리가 느린가
  • 인덱스가 실제로 어떻게 도움이 되는가
  • 일관성(consistency)이란 무엇인가
  • 왜 실패가 데이터 손실을 의미하지 않는가

이 사고방식은 실제 데이터와 엣지 케이스를 다루는 백엔드 프로젝트를 구축할 때 나중에 큰 도움이 되었다.

백엔드 프로젝트에 이러한 개념 적용하기

백엔드 시스템을 구축하기 시작했을 때, 모든 것이 연결되었습니다:

  • OS는 동시성 및 자원 사용에 대해 사고하는 데 도움을 주었습니다
  • CN은 더 나은 요청 흐름을 설계하는 데 도움을 주었습니다
  • DBMS는 더 안전하고 효율적인 데이터 로직을 작성하는 데 도움을 주었습니다

나는 “이걸 어떻게 구현하지?” 라는 질문을 멈추고 “실제 상황에서 이것은 어떻게 동작해야 할까?” 라는 질문을 시작했습니다. 그 변화가 큰 차이를 만들었습니다.

내가 백엔드 시스템에 Go를 좋아하는 이유

백엔드 개발을 배우면서 Go에 끌리게 된 이유는 다음과 같습니다:

  • 영리함보다 단순함
  • 명시적인 오류 처리
  • 명확한 동시성 모델
  • 네트워킹을 위한 강력한 표준 라이브러리

Go는 실수를 숨길 수 없게 만들었고, 명확하게 생각하도록 강요했습니다. 이는 내가 학문적으로 배우고 있던 기본 원칙과 잘 맞았습니다.

계속 배우고, 계속 성장합니다

I don’t consider myself an expert. I’m still learning:

  • Deeper system design concepts
  • Distributed systems
  • Better database internals
  • Observability and reliability

Learning OS, CN, and DBMS early helped me build a strong mental model for backend engineering—and that matters more than tools.

마무리 생각

Backend engineering은 단순히 프레임워크나 언어에 관한 것이 아닙니다. 시스템, 트레이드‑오프, 그리고 실패 모드를 이해하는 것입니다.

백엔드 개발을 배우는 학생이라면, CS 기본기를 무시하지 마세요—그것이 조용히 여러분이 얼마나 좋은 엔지니어가 될지를 형성합니다.

읽어 주셔서 감사합니다.

Back to Blog

관련 글

더 보기 »

시스템 설계 빠른 가이드

System Design은 규모의 언어이며, 모든 엔지니어는 이를 구사해야 합니다. 저는 복잡한 System Design 주제를 해독하는 데 도움이 되는 1‑페이지 Quick Guide를 만들었습니다.