Search
📒

1-4. Client - Server Model

저희가 이제 공부하고자 하는 것은 Spring Boot라는 Framework입니다. 좀더 정확하게는 Web Application Framework라고 부릅니다.
Framework라는 말은 개발 공부를 하면서 흔하게 듣게 되는 용어입니다. 기본적으로 어떤 Framework 라는 것은 특정한 목적을 가진 소프트웨어를 만들기 위해 미리 만들어진 일련의 소스 코드 / 라이브러리 모음 이라고 생각할 수 있습니다. Web Application Framework 라는 말은, Web Application을 만들기 위한 작업을 간략화 해주는 Framework 라고 생각하면 됩니다.
Spring Boot는 Java를 사용하는 Web Application Framework이지만, 저희가 흔히 인터넷 브라우저를 사용해서 확인하는 웹 페이지를 직접 만드는 역할을 하지는 않습니다.

HTML - CSS - Javascript

인터넷이 보급화 되면서 HTML, CSS, Javascript는 인터넷의 기반기술이 되었습니다. 저희가 일반적으로 인터넷 브라우저를 사용하면서 보게되는 산출물은 위의 세가지 기술의 조합으로 이뤄져 있습니다.
HTML: 브라우저에 표시될 내용을 기술하는 Markup Language
CSS: HTML이 브라우저에서 표현되는 방식을 기술하는 언어
Javascript: HTML에 사용자 동작 등에 대한 기능을 정의하기 위한 언어
이 세가지 언어는 기본적으로 인터넷 브라우저에서 해석해서 사용하는 언어입니다. Java로 작성된 소프트웨어를 사용하기 위해 JRE가 필요하듯이, HTML을 해석하기 위해선 인터넷 브라우저가 필요합니다. 그래서 과거에는 어떤 브라우저를 사용하느냐에 따라 정상적으로 작동하는 사이트와 아닌 사이트가 구분되기도 했습니다. 현재는 대부분의 상용 브라우저는 구글 크롬을 기반으로 만들어져서 이런 문제가 드문 편입니다.

Frontend & Backend

웹 개발자를 이야기하면 일반적으로 마주하게 되는 용어입니다. 간단하게는 눈에 보이는 것에 집중하는지, 눈에 보이지 않는 것에 집중하는지를 기준으로 생각할 수 있습니다.
Frontend 개발자의 경우, 앞서 설명했던 HTML, CSS, Javascript를 다루는 기술에 집중하는 개발자를 말하는 경우가 대부분 입니다. 현대에는 ReactJS, VueJS 등의 새로운 Frontend Framework 또는 Library가 많이 등장했습니다. 하지만 결국 인터넷 브라우저가 해석할 수 있는 언어는 HTML, CSS, Javascript이기 때문에, 이 기술들은 중간 과정에 적절한 변환 과정을 거치게 됩니다.
비슷한 배치에 내용의 차이만 존재
Backend 개발자의 경우 실제로 보이는 것보다는 서비스 로직과 데이터를 다루는데 집중하게 됩니다. 인터넷 브라우저는 결국 사용자의 컴퓨터에서 사용하는 도구의 일종으로서, 서비스에 필요한 데이터는 일부를 제외하면 저장되어 있지 않습니다. 그래서 사용자의 요구에 따라 필요한 데이터를, 인터넷이라는 매개체를 통하여 전달하게 되는데, 이 과정에서 필요한 요구사항 정의와, 데이터 구조 관리 등을 전문하게 되는 것이 Backend 개발자 입니다. Spring Framework 역시 대표적인 Backend Framework 입니다.
그 외에 2010년대 들어 회자되는 AI, NFT등의 기술, 또는 모바일앱의 경우 전통적인 Frontend - Backend의 범주 밖이라고 생각할 수 있습니다. 각자 인터넷을 활용하기도 하고, 안하기도 하는 와중에 웹 개발과 완전히 그 결을 같이하지 않습니다.

Client - Server Model

Spring Boot를 공부한다는 것은 웹 개발을 한다는 의미이기도 합니다. 그렇다면 웹이라고 하는 것이 무엇인지 알아볼 필요가 있습니다.
저희가 일반적으로 인터넷 브라우저를 사용하면, 주소창에 위와같이 https 라는 부분이 보일겁니다. 이는 URL이라는, 저희에게 익숙한 용어로 주소라고 하는 것의 앞에 붙은, 정보 전달 규약을 보여주는 부분입니다. 다음 챕터에서 다루게 되겠지만, 기본적인 전기 신호가 어떻게 정렬되어 있는지가 정의된 약속의 이름입니다.
인터넷은 원격으로 연결된 전세계의 수많은 컴퓨터, 그들이 이루는 네트워크를 의미하는 단어입니다. 즉 위에서 언급한 HTTP와 같은 방식으로, 한 컴퓨터에서 다른 컴퓨터로 요청을 보내고 그에 따른 응답을 받는 과정이 진행되는 네트워크입니다.
즉 저희가 인터넷을 활용하기 위해 사용하는 인터넷 브라우저는, 기본적으로 저희에게 제공하는 웹페이지를 들고 있는 것이 아니라, 인터넷을 통해 전기 신호를 보내고 그에 대한 응답으로 돌아온 HTML을 웹페이지로 보여주는 것입니다. 인터넷 브라우저는 내용을 보여주는것에 집중하고, HTML을 전달하는 컴퓨터 또는 서버 측에서는 어떤 내용을 보내주어야 하는지를 정의하는데 집중하게 됩니다.
정보를 제공하는 서버와 정보를 해석하는 브라우저는 각각의 역할이 나눠져 하나의 인터넷 서비스를 제공합니다. 이때 브라우저를 Client, 서버(에서 실행중인 서버 프로세스)를 Server로 역할을 정의, 서비스 제공에 필요한 자원을 분산하는 구조를 Client - Server Model이라고 부릅니다. Frontend - Backend의 기준에서 보자면, Frontend 개발자의 경우 데이터를 받아서 해석하는데 집중하는 Client의 내용을 개발하고, Backend 개발자의 경우 데이터를 제공하는데 집중하는 Server를 개발한다고 볼 수 있습니다.
Spring Boot Framework는 앞서 이야기했듯이 Java 언어를 활용하는 Web Application Framework입니다. 이는 Client - Server Model에서 Server 역할을 하는 어플리케이션을 만드는 것이며, Backend 개발을 공부한다는 의미입니다.