[https://drive.google.com/file/d/1OvoJRVdMK-l9d_iGoBYpl3bAesB39gHu/view?usp=drive_link](https://drive.google.com/file/d/1OvoJRVdMK-l9d_iGoBYpl3bAesB39gHu/view?usp=drive_link)
소프트웨어 개발 핵심 용어사전
이 문서는 소프트웨어 개발 생태계를 구성하는 핵심 개념들을 체계적으로 정리한 교안입니다.
IT 현업에서 반복적으로 등장하는 용어들의 정의, 상호 관계, 그리고 실무적 맥락을 다룹니다.
1. 서비스의 구조: 클라이언트-서버 아키텍처
정의:
웹 서비스는 **요청하는 쪽(클라이언트)**과 **처리하는 쪽(서버)**의 역할 분리를 기반으로 동작합니다. 이 구조를 이해하면 서비스 전체의 데이터 흐름이 보입니다.
| 용어 |
정의 |
비유 |
실무 포인트 |
| 클라이언트 & 서버 |
서비스를 요청하는 주체와 제공하는 주체 |
손님(클라이언트)과 주방(서버) |
모든 웹 통신의 기본 단위 |
| 프론트엔드 |
사용자가 직접 마주하는 화면(UI) 영역 |
식당의 홀 — 인테리어, 메뉴판, 동선 |
사용자 경험(UX)과 첫인상을 결정 |
| 백엔드 |
화면 뒤에서 데이터를 처리하는 서버 영역 |
식당의 주방 — 조리, 식재료 관리, 위생 |
비즈니스 로직, 데이터 무결성, 보안을 담당 |
| 풀스택 |
프론트엔드와 백엔드를 모두 다루는 역할 |
홀과 주방을 오가며 운영하는 사장 겸 셰프 |
전체 아키텍처 이해가 전제되어야 함 |
실무 맥락:
- 백엔드 엔지니어의 핵심 과제 중 하나는 트래픽(Traffic) 관리입니다. 동시 접속자가 급증할 때 서버가 마비되지 않도록 설계해야 하며, DDoS(악의적 대량 접속 공격)에 대한 방어 체계도 필수적입니다.
- 풀스택 개발자를 지향할 때의 리스크는 깊이 없는 넓이 — 모든 영역을 피상적으로만 아는 상태가 되는 것입니다. 특정 영역의 전문성을 기반으로 범위를 확장하는 전략이 효과적입니다.
2. 개발 도구의 분류: 프레임워크, 라이브러리, SDK, IDE
정의:
소프트웨어 개발은 모든 것을 직접 만드는 것이 아니라, 용도에 맞는 도구를 선택하고 조합하는 과정입니다. 도구 간의 차이를 이해하는 핵심은 **'제어권이 누구에게 있는가'**입니다.
- 프레임워크 (Framework): 애플리케이션의 기본 골조와 실행 흐름을 제공하는 틀입니다. 개발자는 이 틀이 정한 규칙 안에서 코드를 작성합니다.
- 비유: 밀키트 — 정해진 레시피(구조)와 조리 순서(흐름)가 있고, 개발자는 그 안에서 재료를 손질합니다.
- 예시: Spring(Java), Django(Python), Vue.js, Angular
- 라이브러리 (Library): 특정 기능을 수행하는 함수·모듈의 집합으로, 개발자가 필요할 때 직접 호출하여 사용합니다.
- 비유: 개별 양념 — 내가 원하는 타이밍에 원하는 양만큼 선택적으로 사용합니다.
- 예시: React, jQuery, Pandas, NumPy
- SDK (Software Development Kit): 특정 플랫폼용 소프트웨어를 만들기 위한 도구 종합 패키지입니다. 컴파일러, 라이브러리, 문서, 디버거 등을 포함합니다.
- 예시: Android SDK, JDK(Java Development Kit), iOS SDK
- IDE (Integrated Development Environment): 코드 작성, 빌드, 디버깅 등 개발에 필요한 도구를 하나의 환경에 통합한 소프트웨어입니다.
- 예시: VS Code, IntelliJ IDEA, Eclipse
핵심 개념 — 제어의 역전(IoC, Inversion of Control):