코드를 작성하는 것만으로는 앱이 사용자에게 도달하지 않습니다. 서버에 올리고, 배포하고, 운영하는 과정이 필요합니다. 3편에서는 서버, 인프라, DevOps 관련 핵심 용어를 정리합니다.
📚 개발 용어 총정리 시리즈
- 1편: 프로그래밍 기초 용어
- 2편: 웹 개발 용어
- 3편: 서버·인프라·DevOps 용어 ← 현재 글
- 4편: 실전 & AI 시대 용어
서버와 호스팅
서버(Server): 클라이언트의 요청을 받아 처리하고 응답하는 컴퓨터입니다. 웹사이트의 HTML, API 데이터 등을 제공합니다.
호스팅(Hosting): 서버를 빌려서 앱이나 웹사이트를 인터넷에 공개하는 것입니다. Vercel, Firebase Hosting, AWS 등이 있습니다.
도메인(Domain): devyul.studio처럼 사람이 읽을 수 있는 웹사이트 주소입니다. IP 주소(예: 123.45.67.89)를 사람이 기억하기 쉬운 이름으로 바꿔줍니다.
DNS (Domain Name System): 도메인 이름을 IP 주소로 변환하는 시스템입니다. 인터넷의 전화번호부와 같습니다.
SSL/TLS: 인터넷 통신을 암호화하는 프로토콜입니다. https://의 's'가 SSL입니다. 데이터가 전송 중에 도청되는 것을 방지합니다.
CDN (Content Delivery Network): 전 세계에 분산된 서버에서 콘텐츠를 제공해 속도를 높이는 네트워크입니다. 한국에서 미국 서버에 접속하는 대신, 가장 가까운 서버에서 콘텐츠를 받습니다.
데이터베이스
데이터베이스(Database): 데이터를 체계적으로 저장하고 관리하는 시스템입니다.
SQL: 관계형 데이터베이스를 다루는 언어입니다. 테이블, 행, 열로 데이터를 구조화합니다. MySQL, PostgreSQL이 대표적입니다.
NoSQL: SQL이 아닌 방식으로 데이터를 저장하는 데이터베이스입니다. JSON 형태의 문서, 키-값 쌍 등 유연한 구조를 사용합니다. MongoDB, Firestore가 대표적입니다.
ORM (Object-Relational Mapping): 데이터베이스 테이블을 코드의 객체로 다룰 수 있게 해주는 도구입니다. SQL을 직접 작성하지 않고 코드로 데이터를 조작합니다. Prisma, TypeORM 등이 있습니다.
마이그레이션(Migration): 데이터베이스의 구조를 변경하는 작업입니다. 테이블 추가, 컨럼 수정 등을 버전 관리하면서 진행합니다.
인덱스(Index): 데이터베이스 검색 속도를 높이기 위한 색인입니다. 책의 찾아보기와 같은 역할을 합니다.
컨테이너와 오케스트레이션
Docker: 애플리케이션을 컨테이너라는 격리된 환경에서 실행하는 도구입니다. "내 컴퓨터에서는 되는데?"라는 문제를 해결합니다. 개발 환경과 운영 환경을 동일하게 맞춥니다.
컨테이너(Container): 앱과 실행에 필요한 모든 것(코드, 라이브러리, 설정)을 하나로 묶은 패키지입니다. 어디서든 동일하게 실행됩니다.
이미지(Image): 컨테이너를 만들기 위한 템플릿입니다. Dockerfile에 정의하고, docker build로 생성합니다.
Kubernetes (K8s): 여러 Docker 컨테이너를 자동으로 관리하고 확장하는 오케스트레이션 도구입니다. 트래픽이 늘면 자동으로 컨테이너를 늘리고, 장애가 나면 자동 복구합니다.
마이크로서비스(Microservices): 하나의 큰 앱을 작고 독립적인 서비스로 나누는 아키텍처입니다. 각 서비스가 독립적으로 배포, 확장 가능합니다. 반대 개념은 모놀리식(Monolithic)입니다.
CI/CD와 DevOps
CI (Continuous Integration): 코드 변경사항을 자동으로 빌드하고 테스트하는 것입니다. PR을 올리면 자동으로 테스트가 돌아갑니다.
CD (Continuous Deployment): 테스트를 통과한 코드를 자동으로 배포하는 것입니다. 사람이 수동으로 배포 버튼을 누를 필요가 없습니다.
GitHub Actions: GitHub에서 제공하는 CI/CD 도구입니다. .github/workflows/ 디렉토리에 YAML 파일로 파이프라인을 정의합니다.
DevOps: 개발(Dev)과 운영(Ops)을 하나로 합친 문화이자 방법론입니다. 개발팀과 운영팀의 벽을 허물어 빠르게 배포하고 안정적으로 운영합니다.
IaC (Infrastructure as Code): 서버, 네트워크 같은 인프라를 코드로 정의하고 관리하는 방식입니다. Terraform, Pulumi가 대표적입니다.
클라우드와 서버리스
클라우드(Cloud): 물리적 서버 대신 인터넷을 통해 제공되는 컴퓨팅 자원입니다. AWS, GCP, Azure가 3대 클라우드 플랫폼입니다.
서버리스(Serverless): 서버 관리 없이 코드만 작성하면 실행되는 아키텍처입니다. Firebase Cloud Functions, AWS Lambda 등이 대표적입니다. 요청이 올 때만 실행되므로 비용이 효율적입니다.
BaaS (Backend as a Service): 백엔드를 직접 구축하지 않고 서비스로 이용하는 방식입니다. Firebase, Supabase 등이 있습니다. 인증, 데이터베이스, 스토리지를 즉시 사용할 수 있습니다.
환경 변수(Environment Variable): 코드에 직접 넣지 않고 실행 환경에서 주입하는 설정값입니다. API 키, 데이터베이스 비밀번호 같은 민감한 정보를 안전하게 관리합니다. .env 파일에 저장합니다.
다음 편 예고
3편에서는 서버, 인프라, DevOps의 핵심 용어를 정리했습니다. 마지막 4편에서는 실전 개발 용어와 AI 시대의 새로운 용어를 다룹니다. 디버깅, 테스트, 성능 최적화, 그리고 LLM, AI Agent 같은 최신 기술 용어까지 정리합니다.