IT 기초 지식 지도 —
개발의 전체 그림 10장
과연 무슨 차이인가 — 헷갈리는 개념들을 지도 한 장으로 정리한다. 코딩을 안 해봐도 괜찮다. AI 도구로 일하기 시작한 사람이 배경 지식을 잡는 자료다.
개발이란 무엇인가
개발은 컴퓨터에게 일을 시키는 명령을 작성하는 행위다. 거창한 말처럼 들리지만, 사람이 하던 반복 작업을 컴퓨터에 맡기는 것이 전부다.
개발 잘하는 사람의 조건
- 문제를 정확히 파악무엇을 만들어야 하는지를 코딩보다 먼저 이해한다.
- 논리적 사고순서와 조건을 빠짐없이 따지는 능력. 언어는 도구일 뿐이다.
- 검색과 응용모든 답을 외우지 않아도 된다. 필요한 것을 찾아 맥락에 맞게 쓴다.
- 끈기처음엔 대부분 안 된다. 오류 메시지를 읽고 고치는 반복이 실력이 된다.
전공자
- 이론(자료구조·알고리즘)을 먼저 배운다
- 언어 내부 동작 원리까지 파고든다
- 협업·설계·테스트 방법을 학교에서 익힌다
비전공자
- 필요한 기능부터 만들며 익힌다
- 이론은 필요할 때 찾아 채운다
- 현장 문제를 빠르게 해결하는 감각이 장점
핵심: 출발점이 다를 뿐, 도달점은 같다. 비전공자도 충분히 개발할 수 있다. AI 도구가 그 격차를 더 빠르게 좁혀준다.
무엇을 만들 수 있는가
소프트웨어는 어디서, 어떻게 실행되느냐에 따라 종류가 나뉜다. 무엇을 만들지에 따라 기술 선택이 달라지므로, 먼저 지도를 본다.
실행 환경별 분류
- 웹 (Web)브라우저에서 URL로 접근하는 정적 페이지. HTML·CSS가 전부인 수준. 이 페이지도 웹이다.
- 웹앱 (Web App)브라우저에서 돌지만 앱처럼 동작한다. 데이터가 실시간으로 바뀌고, 로그인·저장이 된다. Gmail, 구글 독스.
- 네이티브 앱기기(iOS·Android·Windows)에 직접 설치하는 앱. 기기 기능(카메라·GPS·알림)을 깊이 쓸 수 있다.
- 하이브리드 앱웹 기술로 만들었지만 앱처럼 설치·배포된다. React Native, Flutter. 코드 한 벌로 iOS·Android 동시 지원.
프론트엔드
- 사용자 눈에 보이는 화면을 만든다
- HTML · CSS · JavaScript
- 브라우저(클라이언트)에서 실행
- 디자인·인터랙션 담당
백엔드
- 보이지 않는 곳에서 처리·저장
- Python · Java · Node.js 등
- 서버에서 실행
- 데이터·인증·연산 담당
비유: 레스토랑의 홀(프론트엔드)과 주방(백엔드). 손님은 홀만 본다. 맛을 결정하는 건 주방이다.
무슨 언어로 만드는가
개발 언어는 컴퓨터와 대화하는 말이다. 언어마다 잘하는 분야가 있고, 프레임워크는 그 언어 위에 올라타는 도구 상자다.
주요 언어 한눈에
- C / C++속도가 가장 빠른 언어. 운영체제·게임 엔진·임베디드(기계 제어)에 쓰인다. 객체지향 프로그래밍(OOP)의 뿌리.
- JavaScript브라우저가 이해하는 유일한 언어. 화면의 움직임(이벤트 처리)을 담당한다. React가 이 위에 올라탄다.
- Python문법이 쉽고 라이브러리가 방대하다. 데이터 분석·AI·서버 개발 모두 쓰인다. 20년 넘게 쓰이는 이유: 범용성.
- Swift / Kotlin모바일 네이티브 언어. Swift는 iOS, Kotlin은 Android 공식 언어다.
- Java기업 서버(백엔드)의 전통 강자. 엄격하고 안정적이다. Spring 프레임워크와 함께 쓰인다.
언어
- 컴퓨터와 소통하는 문법 체계
- Python, JavaScript, Java
- 언어만으로도 프로그램 가능
- 처음부터 다 만들어야 함
프레임워크
- 언어 위에서 돌아가는 도구 상자
- React(JS), Django(Python), Spring(Java)
- 자주 쓰는 기능이 미리 준비돼 있음
- 정해진 방식대로 채워서 완성
비유: 언어는 요리 재료, 프레임워크는 반조리 밀키트. 밀키트로 훨씬 빠르게 결과물이 나온다.
언어 선택 기준
- 무엇을 만드나웹앱이면 JavaScript/Python, 데이터 분석이면 Python, 모바일이면 Swift/Kotlin
- 팀이 쓰는 언어이미 팀이 쓰는 언어를 따르는 게 가장 현실적이다
- 생태계 크기커뮤니티와 라이브러리가 많을수록 막혔을 때 해결책을 찾기 쉽다
- AI 도구 지원Python과 JavaScript는 AI 코드 보조(Claude, Copilot) 품질이 가장 높다
개발자가 공통으로 쓰는 개념
언어를 막론하고 개발자라면 알아야 하는 개념들이 있다. 이걸 모르면 AI한테 물어볼 때도 엉뚱한 대화가 된다.
포함 관계로 보는 구성 단위
API · REST · OpenAPI Application Programming Interface
- API프로그램끼리 대화하는 창구. 카카오 지도 API를 쓰면 지도를 직접 만들 필요가 없다.
- RESTAPI 설계 규칙의 한 방식. URL로 자원을 표현하고, 행동(GET·POST·PUT·DELETE)으로 요청한다.
- RESTfulREST 규칙을 잘 따른 API를 가리키는 말. 설계가 직관적이어서 오늘날 웹 API의 사실상 표준.
- OpenAPIAPI 명세를 표준 포맷(Swagger)으로 문서화하는 방식. "이 API는 이렇게 써라"를 코드로 설명.
동기 (Synchronous)
- 요청하고 응답 올 때까지 기다린다
- 순서 보장, 단순하다
- 기다리는 동안 아무것도 못 함
- 은행 창구 번호표 대기
비동기 (Asynchronous)
- 요청만 보내고 다른 일 먼저 한다
- 응답이 오면 그때 처리
- 기다리지 않아 훨씬 빠름
- Ajax, 배달 앱 주문 알림
XML
- 태그로 데이터를 감싸는 형식
- <name>홍길동</name>
- HTML과 비슷, 오래된 표준
- 무겁고 읽기 복잡
JSON
- 키: 값 쌍으로 구성
- { "name": "홍길동" }
- 현대 API의 사실상 표준
- 가볍고 사람이 읽기 쉬움
Ajax는 XML로 시작했지만 지금은 거의 JSON을 쓴다. Ajax의 X가 XML이지만 이름만 남아 있다.
만드는 방법의 방법론
코드를 잘 짜는 것과 프로젝트를 잘 끝내는 것은 다른 문제다. 소프트웨어 공학은 팀이 함께 제품을 만드는 프로세스와 원칙을 다룬다.
주요 방법론
- 애자일 (Agile)2~4주 단위로 작은 결과물을 계속 내놓고, 피드백을 받아 방향을 조정한다. 처음부터 완벽한 계획을 세우지 않는다.
- DevOps개발(Dev)과 운영(Ops)을 하나의 팀이 담당. 만들고 → 배포하고 → 모니터링하는 사이클을 빠르게 돌린다.
- CBD 컴포넌트 기반 개발독립된 부품(컴포넌트)을 조립해 소프트웨어를 만든다. 레고 블록처럼 재사용·교체가 쉽다.
- CI · CDCI(지속적 통합): 코드 변경사항을 자동으로 테스트·합친다. CD(지속적 배포): 테스트 통과 시 자동으로 서버에 올린다.
컴퓨터는 어떻게 일하는가
서버 비용을 줄이거나, AI 모델 성능을 이해하거나, 서비스가 느린 이유를 찾으려면 컴퓨터 내부를 알아야 한다.
핵심 하드웨어 3가지
- CPU모든 계산을 처리하는 두뇌. 코어 수가 많을수록 동시에 여러 일을 한다.
- 메모리 (RAM)지금 실행 중인 프로그램이 올라와 있는 곳. 전원 끄면 사라진다. 용량이 클수록 많은 프로그램을 동시에 띄운다.
- 디스크 (SSD/HDD)전원 꺼도 유지되는 영구 저장소. 파일·데이터베이스가 여기 있다.
- 커널 (Kernel)OS의 핵심. CPU·메모리·디스크를 직접 제어하는 가장 낮은 층의 프로그램이다.
메모리 계층 — 빠를수록 작다
프로세스
- 독립된 실행 단위
- 자신만의 메모리 영역을 가짐
- 충돌해도 다른 프로세스에 영향 없음
- 크롬 탭 하나 = 프로세스 하나
스레드
- 프로세스 안의 작은 실행 단위
- 같은 프로세스의 메모리를 공유
- 하나가 망가지면 프로세스 전체 영향
- 멀티스레딩 = 동시에 여러 일 처리
데이터를 어디에, 어떻게 쌓는가
데이터는 모든 서비스의 자산이다. 어떻게 저장하고 꺼내느냐가 서비스의 속도와 안정성을 결정한다.
DBMS란 무엇인가 Database Management System
데이터를 체계적으로 저장·검색·수정·삭제하는 소프트웨어다. MySQL, PostgreSQL, SQLite가 대표적이다.
- 테이블엑셀 시트처럼 행(데이터)과 열(항목)로 구성. 관계형 DB의 기본 단위.
- SQLDB에 명령하는 언어. SELECT · INSERT · UPDATE · DELETE 네 단어가 핵심이다.
- 인덱스책의 찾아보기. 검색 속도를 높이기 위해 특정 열을 미리 정렬해둔 것.
파일 저장
- 텍스트·CSV·엑셀 파일
- 간단하고 즉시 사용 가능
- 검색이 느리다
- 동시 수정 불가, 충돌 위험
- 데이터 양이 늘수록 관리 불능
데이터베이스
- 전용 소프트웨어로 관리
- 설정 필요, 진입장벽 있음
- SQL로 빠른 검색·집계
- 여러 사용자 동시 접속 처리
- 백업·복구·권한 관리 내장
데이터가 100건이면 파일도 괜찮다. 1만 건이 넘으면 반드시 DB를 써야 한다.
인터넷은 어떻게 돌아가는가
우리가 쓰는 모든 서비스는 네트워크를 통해 이동한다. 어디서 막혔는지, 왜 느린지를 이해하려면 네트워크 기초가 필요하다.
통신 기본 개념
- 클라이언트 / 서버요청하는 쪽(클라이언트)과 응답하는 쪽(서버). 브라우저가 클라이언트, 우리 서버가 서버다.
- HTTP웹에서 데이터를 주고받는 규칙(프로토콜). 브라우저와 서버가 이 규칙으로 대화한다.
- TCP/IP인터넷의 기반 통신 규칙. IP는 주소, TCP는 데이터를 쪼개 보내고 합치는 방식.
- 로드밸런서들어오는 요청을 여러 서버에 나눠준다. 한 서버에 몰리지 않게 하는 교통 정리.
웹서버
- 정적 파일을 그대로 전달
- HTML·이미지·CSS 파일
- Nginx, Apache
- 빠르고 가볍다
WAS (웹 애플리케이션 서버)
- 요청마다 동적으로 처리
- 로그인 확인, DB 조회, 연산
- Tomcat, Django, Node.js
- 무겁지만 유연하다
실제 서비스는 앞에 Nginx(웹서버)를 두고, 뒤에 WAS를 연결하는 구조가 많다.
라우터
- 서로 다른 네트워크를 연결
- 인터넷과 내부망을 이어준다
- 가정용 공유기가 라우터다
스위치
- 같은 네트워크 안에서 연결
- 사무실 내부 기기끼리 연결
- 데이터를 정확한 기기로 전달
세션 · 쿠키
- 서버가 로그인 정보를 저장
- 쿠키는 브라우저에 ID만 보관
- 서버 자원을 사용함
- 전통적인 방식, 안전
JWT (토큰)
- 서버가 토큰만 발급, 직접 저장 안 함
- 클라이언트가 토큰을 보관·제출
- 서버 자원 절약, 수평 확장 유리
- 모바일 앱·API에서 많이 쓴다
시스템을 어떻게 설계하는가
아키텍처는 건물의 설계도다. 나중에 고치려면 벽을 허물어야 하듯, 소프트웨어 구조도 처음 설계가 이후 모든 것을 결정한다.
스타벅스 비유 — 역할 분리
스타벅스에는 주문 받는 사람·음료 만드는 바리스타·전달하는 사람이 따로 있다. 이 분업 덕분에 줄이 줄어들고 실수가 줄어든다. 시스템도 같다 — 역할별로 나누면 하나가 바빠도 다른 쪽은 여유가 있다.
모놀리식 (Monolithic)
- 모든 기능이 하나의 코드 덩어리
- 처음 만들기 쉽다
- 규모가 커지면 수정이 어렵다
- 하나 고장 나면 전체 다운
- 소규모 팀·초기 스타트업에 적합
MSA (마이크로서비스)
- 기능별로 독립된 작은 서비스들
- 설계·운영이 복잡하다
- 부분 수정·배포가 자유롭다
- 하나 고장 나도 다른 건 살아있음
- 대규모 팀·성숙한 서비스에 적합
대부분의 서비스는 모놀리식으로 시작해, 규모가 커지면 MSA로 분리한다. 처음부터 MSA는 과도한 설계다.
지금 세계가 돌아가는 방식
서버를 사지 않고 빌려 쓰는 클라우드, 방대한 데이터를 다루는 빅데이터, 그 위에 올라선 AI. 이 세 개가 지금 디지털 세계를 움직인다.
클라우드 컴퓨팅
서버·저장소·DB·네트워크를 인터넷으로 빌려 쓰는 것. AWS, Google Cloud, Azure가 3대 플랫폼이다. 사지 않고 쓴 만큼만 낸다.
서버리스 · 컨테이너
- 서버리스서버가 없는 게 아니라, 서버 관리를 안 한다는 뜻. 함수 단위로 실행되고 비용도 실행한 만큼만. AWS Lambda.
- 하이브리드회사 자체 서버(온프레미스)와 클라우드를 함께 쓰는 방식. 민감한 데이터는 사내에, 나머지는 클라우드.
Docker (컨테이너)
- 프로그램을 컨테이너로 포장
- "내 컴퓨터에선 됐는데" 문제 해결
- 어디서나 동일하게 실행
- 개별 컨테이너 관리
Kubernetes (컨테이너 지휘자)
- 컨테이너들을 자동으로 관리
- 죽으면 자동 재시작
- 트래픽 많으면 자동 증설
- 대규모 서비스 운영에 필수
빅데이터 · AI
- 빅데이터기존 도구로 처리하기 어려울 만큼 방대한 데이터. 양(Volume)·속도(Velocity)·다양성(Variety)이 핵심.
- AI (인공지능)데이터에서 패턴을 학습해 스스로 판단·예측하는 소프트웨어. 머신러닝→딥러닝→LLM(ChatGPT류) 순으로 발전.
- LLM대규모 언어 모델. 방대한 텍스트로 학습해 글을 이해하고 생성한다. Claude, GPT가 여기에 속한다.