처음 개발 공부를 시작했을 때, 저는 무작정 파이썬 강의부터 켰습니다. 변수가 뭔지, 함수가 뭔지 배우긴 했는데 — 정작 "이게 어디에 쓰이는 거지?"라는 질문에 답을 못 했습니다. 지도 없이 산에 오른 느낌이랄까요. IT 기술 전체의 흐름을 먼저 잡았더라면 그 시간을 절반은 줄였을 거라고 지금도 생각합니다. 비전공자가 개발 세계에 발을 들일 때 가장 먼저 필요한 건 언어 문법이 아니라 전체 지도입니다.

비전공자가 길을 잃는 이유 — 흐름이 없어서입니다
솔직히 이건 예상 밖이었습니다. 개발을 배우려는 사람들이 넘쳐나는데, 정작 "이 기술들이 서로 어떻게 연결되는가"를 차근차근 짚어주는 콘텐츠는 드뭅니다. 컴퓨터 구조 교재는 CPU 이야기부터 시작하고, 유튜브 강의는 바로 코드부터 치라고 합니다. 그 사이 어딘가에서 많은 분들이 이탈합니다.
제가 직접 겪어봤는데, 비전공자와 전공자의 결정적 차이는 실력이 아니라 맥락입니다. 전공자는 4년 동안 소프트웨어 공학, 운영체제(OS), 네트워크, 데이터베이스를 순서대로 쌓습니다. 비전공자는 이 순서 없이 파이썬이나 자바 한 가지만 파고들다가 "내가 뭘 만들 수 있는 거지?"라는 벽에 부딪힙니다.
그래서 저는 IT 기술을 이해하는 순서를 바꿔 생각해보기로 했습니다. 출발점은 우리가 매일 쓰는 앱과 웹사이트입니다. 카카오톡은 어떤 구조로 동작하고, 네이버는 어떤 기술로 만들어졌는지 — 이걸 먼저 알면 "내가 뭘 만들어야 하는가"가 보입니다. 목적지를 알고 출발하는 것과 모르고 출발하는 것은 전혀 다른 여정입니다.
- 웹(Web): 브라우저에서 실행되는 서비스. 네이버, 구글 등이 대표적입니다.
- 앱(Native App): 스마트폰에 설치해서 실행하는 형태. 기기 기능을 더 깊이 활용할 수 있습니다.
- 하이브리드(Hybrid App): 겉은 앱이지만 내부는 웹 기술로 구현된 형태. 카카오톡 내 웹뷰 화면이 여기에 해당합니다.
개발언어와 프레임워크 — 이 둘을 헷갈리면 계속 헤맵니다
제가 처음 "리액트 배워야 한다"는 말을 들었을 때, 리액트가 언어인 줄 알았습니다. 자바스크립트와 자바가 같은 언어인 줄도 알았고요. 지금 생각하면 웃음이 나오지만, 이 혼란은 저만의 이야기가 아닙니다. 이 둘을 제대로 구분하지 않으면 공부 방향 자체가 흔들립니다.
먼저 개발언어(Programming Language)란 문법 체계를 가진 도구입니다. 자바(Java), 자바스크립트(JavaScript), C, 파이썬이 여기에 해당합니다. 한 가지만 짚고 넘어가면, 자바와 자바스크립트는 이름만 비슷할 뿐 전혀 다른 언어입니다. 역사적 마케팅의 산물이라고 보면 됩니다(출처: MDN Web Docs).
반면 프레임워크(Framework)란 언어를 기반으로 개발을 더 빠르고 쉽게 할 수 있도록 미리 틀을 만들어 놓은 개발 도구입니다. 빵틀에 반죽을 넣으면 일정한 모양의 빵이 나오듯, 프레임워크는 개발자가 매번 같은 기능을 처음부터 짜지 않아도 되게 해줍니다. 스프링(Spring), 스프링부트(Spring Boot), 리액트(React), Node.js가 대표적입니다.
프론트엔드(Front-end), 즉 화면에 보이는 영역은 HTML·CSS·자바스크립트, 그리고 리액트 같은 프레임워크로 만듭니다. 여기서 HTML이란 웹 페이지의 뼈대를 구성하는 마크업 언어이고, CSS는 그 뼈대에 색과 배치를 입히는 스타일 언어입니다. 백엔드(Back-end), 즉 서버와 데이터를 처리하는 영역은 자바+스프링부트, 파이썬+Django, Node.js 같은 조합으로 구축합니다. 제가 직접 스프링부트로 간단한 API를 만들어봤는데, 인증 처리나 예외 처리 같은 반복 작업이 이미 틀 안에 다 들어있어서 체감 속도가 확실히 달랐습니다.
아키텍처와 클라우드 — 서버 한 대로는 세상이 안 돌아갑니다
코드를 짜서 프로그램을 만들었다고 끝이 아닙니다. 그 프로그램이 실제로 어디서, 어떻게 돌아가느냐가 또 다른 세계입니다. 제 경험상 이 부분에서 "나는 개발만 할 건데 서버까지 알아야 해?"라고 막히는 분들이 많습니다. 그런데 이 흐름을 알아야 바이브 코딩이든 풀스택 개발이든 더 생산적으로 할 수 있습니다.
아키텍처(Architecture)란 여러 대의 서버와 시스템을 어떤 구조로 배치하고 연결할지를 설계하는 개념입니다. 건물을 지을 때 목적에 따라 구조가 달라지듯, 시스템도 목적에 따라 설계가 달라집니다. 가장 흔한 구조는 3티어(3-Tier) 아키텍처입니다. 화면을 보여주는 웹 서버, 실제 로직을 처리하는 WAS(Web Application Server), 데이터를 저장하는 데이터베이스(DB)를 세 단계로 분리한 구조입니다. 그리고 최근에는 MSA(Microservice Architecture), 즉 서비스를 기능 단위로 잘게 쪼개어 독립적으로 운영하는 방식도 많이 쓰입니다(출처: AWS 마이크로서비스 소개).
이 서버들이 통신하는 데 쓰이는 규약이 HTTP 프로토콜(HyperText Transfer Protocol)입니다. 여기서 HTTP란 웹 브라우저와 웹 서버가 데이터를 주고받기 위해 약속한 규약으로, 지금 우리가 보는 모든 웹사이트는 이 프로토콜 위에서 동작합니다. 여기에 보안 암호화를 더한 것이 HTTPS입니다.
그리고 이 서버들을 직접 구매해서 운영하지 않아도 되게 만들어준 것이 바로 클라우드(Cloud)입니다. 클라우드 기술의 근본은 가상화(Virtualization)인데, 가상화란 물리적 서버 한 대를 소프트웨어로 여러 개의 독립된 서버처럼 나누는 기술입니다. AWS에서 EC2 인스턴스를 5분 만에 생성할 수 있는 것도 이 가상화 덕분입니다. 더 나아가 도커(Docker)는 이 가상 환경을 OS 없이 훨씬 가볍게 만든 컨테이너 기술이고, 쿠버네티스(Kubernetes)는 이 컨테이너들을 대규모로 관리하는 오케스트레이션 도구입니다. 제가 처음 도커를 접했을 때는 "그냥 가상머신이랑 뭐가 다르지?"라고 생각했는데, 실제로 배포 환경에 써보고 나서야 속도와 효율 차이를 체감했습니다.
자주 묻는 질문
Q. 비전공자도 IT 기술 흐름을 다 알아야 개발을 시작할 수 있나요?
A. 전부 깊게 알 필요는 없습니다. 제가 직접 겪어봤는데, 전체 지도를 한 번 훑어보는 것만으로도 이후 공부 속도가 달라집니다. 어느 영역을 집중적으로 파야 하는지 방향이 생기기 때문입니다. 처음엔 흐름만 파악하고, 필요한 영역부터 깊이를 더해가는 방식이 현실적입니다.
Q. 자바와 자바스크립트는 정말 다른 언어인가요?
A. 전혀 다른 언어입니다. 이름이 비슷한 건 1990년대 마케팅 과정에서 생긴 역사적 산물입니다. 자바(Java)는 주로 백엔드 서버 개발에, 자바스크립트(JavaScript)는 주로 웹 프론트엔드 개발에 쓰입니다. 용도와 문법 모두 다르니 처음부터 구분해서 배우는 게 좋습니다.
Q. 프레임워크를 배우려면 언어부터 먼저 배워야 하나요?
A. 원칙적으로는 그렇습니다. 프레임워크는 언어 위에서 동작하기 때문에 언어의 기초 개념이 없으면 프레임워크가 왜 이렇게 구성됐는지 이해하기 어렵습니다. 다만 목적이 빠른 서비스 출시라면, 기초 언어를 가볍게 익히면서 프레임워크를 병행하는 방식도 충분히 유효합니다.
Q. 도커(Docker)와 쿠버네티스(Kubernetes)는 언제 배워야 하나요?
A. 처음부터 배울 필요는 없습니다. 개발 언어와 기본 서버 구조를 어느 정도 익힌 뒤, 실제 배포 경험이 생겼을 때 자연스럽게 필요성을 느끼게 됩니다. 제 경험상 "왜 필요한지"를 먼저 체감한 뒤에 배우는 게 훨씬 빠르게 흡수됩니다.
결론
IT 기술은 방대해 보이지만, 흐름을 알면 생각보다 구조가 단순합니다. 앱과 웹이 어떻게 만들어지고, 그것을 만드는 개발언어와 프레임워크가 무엇이며, 완성된 프로그램이 서버와 네트워크를 통해 어떻게 서비스되는지 — 이 큰 그림 하나만 머릿속에 있어도 다음 발걸음이 훨씬 가벼워집니다.
제가 직접 써봤는데, 바이브 코딩이든 독학이든 이 흐름을 먼저 잡고 시작한 경우와 그렇지 않은 경우는 6개월 뒤 실력 차이가 상당히 납니다. 지금 어느 영역에 관심이 있는지 먼저 파악하고, 그 영역에서 필요한 언어와 도구를 하나씩 쌓아가는 방식을 권합니다. 지도를 손에 쥐고 출발하는 것, 그게 전부입니다.