
코딩을 처음 시작할 때 저도 가장 먼저 한 고민은 자바를 배울까, 파이썬을 배울까 이였습니다.
언어 선택에만 며칠을 쏟아부었는데, 정작 그보다 훨씬 중요한 것이 있었습니다.
IT 서비스가 어떤 구조로 움직이는지, 그 큰 그림을 먼저 이해하는 일이었습니다. 문법은 나중에 얼마든지 익힐 수 있지만, 구조를 모르면 공부가 계속 끊기는 느낌을 받게 됩니다.
클라이언트-서버 구조를 모르면 프런트엔드와 백엔드가 계속 헷갈린다
코딩 공부를 어느 정도 진행하다 보면 프런트엔드와 백엔드라는 말을 반드시 마주치게 됩니다. 그런데 이 두 개념이 왜 나뉘는지 이해하려면, 클라이언트-서버 구조(Client-Server Architecture)부터 짚어야 합니다. 여기서 클라이언트-서버 구조란 사용자의 화면 쪽과 데이터를 처리하는 쪽이 역할을 나눠 서로 통신하는 방식을 의미합니다.
클라이언트는 사용자가 직접 보고 조작하는 영역입니다.
웹 브라우저에서 열리는 페이지, 스마트폰 앱 화면, 로그인 버튼 같은 것들이 여기에 해당합니다. 반대로 서버는 그 요청을 받아 처리하는 쪽입니다. 로그인 버튼을 누르면 아이디와 비밀번호가 서버로 전달되고, 서버가 회원 정보와 대조해 결과를 클라이언트로 돌려보냅니다.
제가 처음에 이 구조를 몰랐을 때는 프런트엔드 강의를 보면서도 이 코드가 어디서 도는 건지 계속 불분명했습니다.
클라이언트-서버 구조를 이해하고 나서야 비로소 내가 지금 배우는 건 사용자 화면 쪽이구나 라는 감이 잡혔습니다.
국내 IT 직군 채용 공고를 분석한 자료에 따르면, 프런트엔드와 백엔드를 명확히 구분해 채용하는 기업이 전체 개발 직군의 70% 이상을 차지합니다. 이 분리 자체가 클라이언트-서버 구조에서 비롯된 것이라는 점을 생각하면, 입문 단계에서 이 개념을 건너뛰는 건 꽤 큰 손실입니다.
프런트엔드와 백엔드를 처음 이해할 때 도움이 되는 구분법은 다음과 같습니다.
- 프런트엔드: 사용자 화면 구성, 버튼 동작, 입력창 처리 등 클라이언트 측 코드
- 백엔드: 로그인 검증, 데이터 저장, 비즈니스 로직 처리 등 서버 측 코드
- 풀스택: 프런트엔드와 백엔드를 모두 담당하는 개발 영역
요청-응답 흐름과 API를 이해하면 웹 서비스가 달라 보인다
사용자가 쇼핑몰에서 상품 목록 페이지를 열 때 화면이 바뀌는 것처럼 보이지만, 실제로는 상당히 많은 일이 벌어집니다.
클라이언트가 서버에 상품 정보를 요청하고, 서버가 데이터베이스에서 해당 정보를 꺼내 응답으로 보내줍니다. 클라이언트는 그 응답을 받아 화면에 표시합니다.
이 흐름이 HTTP 요청-응답 사이클(HTTP Request-Response Cycle)입니다. HTTP 요청-응답 사이클이란 클라이언트가 서버에 특정 정보를 달라고 요청하고, 서버가 그에 맞는 결과를 돌려주는 일련의 통신 과정을 말합니다
이 과정에서 등장하는 개념이 API(Application Programming Interface)입니다.
API란 클라이언트와 서버가 정해진 규칙에 따라 데이터를 주고받는 통로라고 이해하면 됩니다. 예를 들어 날씨 앱이 기상청 서버에서 오늘 날씨를 가져올 때, 양쪽이 미리 약속한 방식으로 요청하고 응답하는 것이 API의 동작 방식입니다.
솔직히 처음 API라는 단어를 들었을 때는 뭔가 엄청나게 복잡한 기술처럼 느껴졌습니다.
그런데 실제로 접해보니, 정해진 주소로 요청을 보내면 정해진 형식으로 데이터가 돌아온다는 단순한 원리였습니다. 이걸 몸으로 이해하고 나니 이후 REST API나 JSON 같은 개념도 훨씬 빠르게 흡수됐습니다.
현재 대부분의 웹 서비스는 REST API 방식을 기반으로 클라이언트와 서버가 통신합니다.
REST API(Representational State Transfer API)란 URL 구조와 HTTP 메서드(GET, POST, PUT, DELETE)를 활용해 자원을 주고받는 방식을 의미하며, 업계 표준으로 자리 잡은 지 오래입니다. 코딩 입문 자라면 REST API라는 단어를 외울 필요는 없지만, 요청과 응답이 오고 간다는 흐름만큼은 확실히 머릿속에 새겨두는 것이 좋습니다.
데이터베이스 없이는 서비스가 기억을 못 한다
코딩 공부를 처음 시작할 때 가장 존재감이 희미했던 개념이 저에게는 데이터베이스였습니다.
화면도 보이고, 서버도 뭔가 처리한다는 느낌은 왔는데, 데이터베이스는 그냥 어딘가에 저장되는 것 정도로만 막연하게 인식했습니다.
그런데 실제 서비스를 조금씩 들여다보면 데이터베이스(Database, DB)의 역할이 얼마나 핵심적인지 보이기 시작합니다.
데이터베이스란 서비스에 필요한 정보를 체계적으로 저장하고 필요할 때 꺼내 쓸 수 있도록 관리하는 시스템을 말합니다. 회원가입 정보, 게시글, 주문 내역, 댓글 같은 것들이 전부 여기에 쌓입니다.
데이터베이스가 없다면 사용자가 어제 남긴 글을 오늘 다시 볼 수 없습니다.
로그인을 해도 서버가 회원인지 아닌지 판단할 근거가 없습니다. 서비스가 기억을 잃는 셈입니다. 제가 처음으로 간단한 게시판을 만들어보면서 이 점을 가장 강하게 체감했습니다. 데이터베이스를 연결하기 전에는 새로고침만 해도 입력한 내용이 사라졌고, 연결하고 나서야 비로소 서비스다운 서비스가 된 느낌이었습니다.
입문 단계에서 많이 접하는 관계형 데이터베이스(Relational Database)는 데이터를 행과 열로 구성된 테이블 형태로 저장합니다.
관계형 데이터베이스란 엑셀 시트처럼 데이터를 표 구조로 정리하고, 테이블 간의 관계를 정의해 복잡한 정보를 효율적으로 관리하는 방식입니다. SQL(Structured Query Language)은 이 데이터베이스에서 정보를 저장하거나 조회할 때 사용하는 언어로, 코딩 입문자도 기본 문법만 익혀두면 실습에 충분히 활용할 수 있습니다.
코딩 입문 교육이 여전히 문법 중심으로만 진행되는 경우가 많다고 느끼는 이유가 여기에 있습니다.
변수와 반복문을 외우는 것도 물론 필요하지만, 클라이언트-서버 구조, 요청-응답 흐름, 데이터베이스의 역할을 함께 이해해야 내가 작성한 코드가 전체 서비스 안에서 어디에 위치하는지 감을 잡을 수 있습니다. 이 감각이 없으면 공부가 계속 파편처럼 느껴질 수밖에 없습니다.
코딩 공부의 방향이 고민된다면, 언어 문법 공부와 병행해서 IT 기본 구조를 먼저 훑어보시길 권합니다.
클라이언트와 서버가 어떻게 나뉘는지, 요청과 응답이 어떻게 오고 가는지, 데이터베이스가 어떤 역할을 하는지. 이 세 가지 흐름을 이해하고 나면 이후 웹 개발이든 백엔드든 어떤 방향으로 나아가도 훨씬 덜 막막합니다. 제 경험상 이 큰 그림이 잡힌 순간부터 공부 속도가 눈에 띄게 달라졌습니다.