pgms

[19주차] - [9기] 타입스크립트로 함께하는 웹 풀 사이클 개발(React, Node.js) 10회차 - 86

Ejah 2026. 5. 21. 20:05

컴퓨터 구조부터 벡터 데이터베이스까지, 백엔드 개발자가 이해해야 하는 핵심 개념 정리

최근 학습한 내용을 정리하면서 컴퓨터 구조, 운영체제, 데이터베이스, ORM, 그리고 벡터 데이터베이스까지 전체 흐름을 다시 복습해보았다.
처음에는 각각 전혀 다른 분야처럼 느껴졌지만, 실제로는 모두 연결되어 있었다.

특히 백엔드 개발이나 서버 개발을 하다 보면:

  • 왜 캐시가 필요한지
  • 왜 프로세스와 스레드를 알아야 하는지
  • 왜 데이터베이스 구조가 중요한지
  • 왜 ORM이 편리하면서도 위험할 수 있는지
  • 왜 최근 AI 서비스들이 벡터 DB를 사용하는지

이런 것들이 결국 하나의 흐름으로 이어진다는 걸 느끼게 된다.

이번 글에서는 학습한 내용을 바탕으로 컴퓨터 구조부터 운영체제, 데이터베이스, 벡터 데이터베이스까지 핵심 개념들을 정리해보려고 한다.


1. 컴퓨터 구조와 운영체제

컴퓨터는 어떻게 프로그램을 실행할까?

우리가 작성한 코드는 결국 CPU가 이해할 수 있는 명령어로 변환되어 실행된다.

예를 들어:

  • JavaScript
  • Python
  • Java
  • C

같은 언어는 사람이 읽기 쉽게 만든 고급 언어이다.

하지만 CPU는 오직 기계어만 이해할 수 있기 때문에, 프로그램은 반드시 번역 과정을 거쳐야 한다.

이때 등장하는 개념이:

  • 컴파일러
  • 인터프리터
    이다.

2. 컴파일러와 인터프리터

컴파일러 방식

컴파일러는 프로그램 전체를 한 번에 번역한다.

대표적인 언어:

  • C
  • C++

특징:

  • 실행 속도가 빠르다
  • 실행 전에 오류를 많이 검출 가능하다
  • 최적화에 유리하다

하지만:

  • 운영체제나 CPU 구조가 달라지면 다시 컴파일해야 한다

예를 들어:

  • Windows용 exe
  • Mac용 실행 파일
    은 서로 다르다.

인터프리터 방식

인터프리터는 한 줄씩 읽으면서 실행한다.

대표적인 언어:

  • Python
  • JavaScript

특징:

  • 플랫폼 독립성이 좋다
  • 개발 속도가 빠르다
  • 디버깅이 편하다

하지만:

  • 실행 속도가 상대적으로 느리다

실제로 Python이 C보다 느린 이유도 여기에 있다.


3. RISC와 CISC

CPU 구조에서도 중요한 개념이 있다.

바로:

  • RISC
  • CISC

이다.


CISC

Complex Instruction Set Computer

특징:

  • 명령어 종류가 많다
  • 하나의 명령어가 복잡한 작업 수행 가능
  • 대표적으로 x86 계열

장점:

  • 코드 길이가 짧아질 수 있다

단점:

  • 하드웨어 구조가 복잡하다

RISC

Reduced Instruction Set Computer

특징:

  • 단순한 명령어 위주
  • Load / Store 구조 사용
  • ARM 계열에서 많이 사용

장점:

  • 전력 효율이 좋다
  • 파이프라이닝에 유리하다

최근 모바일 CPU 대부분은 ARM 기반이다.

애플 M 시리즈 칩 역시 ARM 기반 RISC 구조를 사용한다.


4. 운영체제의 역할

운영체제(OS)는 단순히 화면을 보여주는 프로그램이 아니다.

운영체제의 핵심 역할은:

  • CPU 관리
  • 메모리 관리
  • 프로세스 관리
  • 입출력 관리

등 하드웨어 자원을 효율적으로 관리하는 것이다.

그리고 이 핵심 기능을 담당하는 부분이 바로 커널(kernel)이다.


5. 시스템 콜(System Call)

사용자 프로그램은 하드웨어에 직접 접근할 수 없다.

예를 들어:

  • 파일 읽기
  • 네트워크 통신
  • 메모리 할당

같은 작업은 반드시 운영체제를 거쳐야 한다.

이때 사용하는 인터페이스가 시스템 콜이다.

흐름은 보통 다음과 같다.

사용자 프로그램
→ 라이브러리 함수
→ 시스템 콜
→ 커널
→ 하드웨어

즉 운영체제가 안전하게 자원을 관리하기 위해 중간에서 통제하는 구조라고 볼 수 있다.


6. 프로세스와 스레드

운영체제를 공부하면서 가장 중요하게 느낀 개념 중 하나가 프로세스와 스레드였다.


프로세스(Process)

실행 중인 프로그램 자체를 의미한다.

예:

  • 크롬 브라우저 실행
  • VSCode 실행

각 프로세스는 독립된 메모리 공간을 가진다.


스레드(Thread)

프로세스 내부에서 실제 작업을 수행하는 흐름이다.

예를 들어:

  • 게임 렌더링
  • 네트워크 처리
  • 사용자 입력 처리

를 각각 다른 스레드가 담당할 수 있다.


7. 동기화 문제

멀티스레드 환경에서는 여러 작업이 동시에 같은 자원에 접근할 수 있다.

대표적인 문제가:

  • Race Condition
    이다.

예:

  • 동시에 같은 변수 수정
  • 동시에 같은 파일 접근

이런 문제를 해결하기 위해:

  • Mutex
  • Semaphore
  • Monitor

같은 동기화 기법을 사용한다.

운영체제는 이런 동기화 메커니즘도 제공한다.


8. 메모리 관리와 캐시

CPU는 매우 빠르지만 메모리는 상대적으로 느리다.

이 속도 차이를 줄이기 위해 캐시 메모리를 사용한다.

특징:

  • CPU 내부에 존재
  • 자주 사용하는 데이터를 저장
  • 접근 속도가 매우 빠름

하지만 캐시 용량은 매우 작기 때문에:

  • 어떤 데이터를 넣을지
  • 어떤 데이터를 제거할지

를 결정해야 한다.

흥미로운 점은, 이런 캐시 교체는 보통 운영체제가 아니라 하드웨어 레벨에서 처리된다는 것이다.


9. 데이터베이스와 관계형 모델

백엔드 개발에서 가장 중요한 영역 중 하나가 데이터베이스다.

특히 관계형 데이터베이스(RDBMS)는 여전히 가장 많이 사용된다.

대표적으로:

  • MySQL
  • PostgreSQL
  • Oracle

등이 있다.


관계형 데이터베이스의 기본 구조

테이블 구성 요소:

  • Row → 튜플(tuple)
  • Column → 속성(attribute)

그리고 테이블 자체를 릴레이션(relation)이라고 부른다.


10. 데이터 무결성

데이터베이스에서는 데이터가 잘못 저장되지 않도록 여러 제약 조건을 둔다.

대표적인 것이:

  • 개체 무결성
  • 참조 무결성

이다.


참조 무결성

외래키(Foreign Key)는 반드시 존재하는 데이터를 참조해야 한다.

예:

  • 존재하지 않는 사용자 ID 참조 금지
  • 삭제된 게시글 참조 금지

이런 규칙이 참조 무결성이다.

실무에서도 굉장히 중요하다.


11. 트랜잭션과 ACID

데이터베이스에서 가장 중요한 개념 중 하나는 트랜잭션이다.

트랜잭션은:
“모두 성공하거나 모두 실패해야 하는 작업 단위”
이다.

예:

  • 계좌 이체
  • 결제 처리
  • 주문 생성

ACID 속성

트랜잭션은 다음 4가지 속성을 만족해야 한다.

Atomicity (원자성)

모두 성공 또는 모두 실패

Consistency (일관성)

데이터 상태 유지

Isolation (독립성)

동시 실행 간 간섭 방지

Durability (영구성)

커밋된 데이터는 유지

백엔드 개발에서 트랜잭션 처리는 정말 중요하다.

특히 동시성 문제가 있는 서비스에서는 더 중요하다.


12. ORM(Object Relational Mapper)

최근 대부분의 백엔드 프레임워크는 ORM을 적극적으로 사용한다.

예:

  • Prisma
  • TypeORM
  • Sequelize
  • Hibernate

ORM은 객체와 데이터베이스를 연결해주는 기술이다.


ORM의 장점

1) 생산성 향상

직접 SQL을 작성하지 않아도 된다.

예:

 
const users = await prisma.user.findMany();
 

처럼 객체 기반으로 개발 가능하다.


2) 유지보수성 향상

테이블 변경 시 코드 관리가 편하다.


3) DB 종속성 감소

MySQL → PostgreSQL 변경 시 상대적으로 유리하다.


ORM의 단점

하지만 ORM이 만능은 아니다.

문제점:

  • 복잡한 쿼리 비효율 가능
  • N+1 문제
  • 성능 튜닝 어려움

실무에서는 ORM + Raw SQL을 함께 사용하는 경우가 많다.


13. NoSQL과 벡터 데이터베이스

최근 AI 서비스가 많아지면서 벡터 데이터베이스(Vector DB)가 굉장히 중요해지고 있다.


14. 벡터 데이터베이스란?

텍스트나 이미지를 숫자 벡터로 변환하여 저장하고 유사도를 검색하는 데이터베이스이다.

예:

  • ChatGPT 검색
  • 추천 시스템
  • 이미지 유사 검색
  • 문서 검색

등에서 사용된다.


15. 임베딩(Embedding)

비정형 데이터를 숫자로 변환하는 과정을 임베딩이라고 한다.

예:

  • 문장
  • 이미지
  • 음성

→ 벡터 변환

이 벡터끼리 거리 계산을 수행한다.


16. ANN 알고리즘

벡터 검색에서는 완전 탐색이 매우 느리다.

그래서:

  • Approximate Nearest Neighbor

알고리즘을 사용한다.

특징:

  • 정확도를 조금 희생
  • 속도를 크게 향상

대표적인 라이브러리:

  • FAISS
  • HNSW
  • Annoy

17. 추천 시스템과 벡터 검색

벡터 DB는 추천 시스템에서도 자주 사용된다.

예:

  • 유튜브 추천
  • 넷플릭스 추천
  • 쇼핑몰 상품 추천

“비슷한 사용자”
“비슷한 콘텐츠”
를 빠르게 찾을 수 있기 때문이다.


18. 결국 모든 것은 연결되어 있다

이번 내용을 공부하면서 느낀 점은:

컴퓨터 구조
→ 운영체제
→ 프로세스/메모리
→ 데이터베이스
→ 벡터 검색

이 모두 따로 존재하는 개념이 아니라는 점이었다.

예를 들어:

  • 캐시는 CPU에도 존재하고 Redis에도 존재한다
  • 동기화 문제는 OS에서도 발생하고 DB에서도 발생한다
  • 메모리 관리 개념은 벡터 DB 성능에도 영향을 준다

결국 좋은 백엔드 개발자가 되기 위해서는 단순히 API만 만드는 것이 아니라 컴퓨터가 어떻게 동작하는지 전체 흐름을 이해하는 것이 중요하다는 걸 느끼게 되었다.


마무리

처음에는:

  • 운영체제
  • 데이터베이스
  • 벡터 검색

이 모두 어려운 개념처럼 느껴졌지만, 하나씩 연결해서 이해하니 훨씬 재미있었다.

특히 최근 AI 시대에는:

  • 벡터 데이터베이스
  • 임베딩
  • 유사도 검색

같은 개념이 점점 더 중요해지고 있다.

앞으로는 단순 CRUD를 넘어서:

  • 검색
  • 추천
  • AI 기반 서비스

까지 고려하는 개발자가 되는 것이 목표다.