본문 바로가기

Spring Boot

자바 백엔드 개발자가 알아야 할 지식

728x90

클라이언트와 서버

 

클라이언트란?

클라이언트는 서버에 요청을 보내는 모든 프로그램을 일컫는 말입니다. 대표적으로 웹 브라우저가 클라이언트 중 하나입니다.

웹 브라우저에서 주소를 입력하고 화면을 확인할 때, 주소를 입력한 뒤 Enter를 눌러 정보를 요청하는 행위를 서버에 요청한다고 합니다. 그러면 서버는 그 주소에 맞는 화면을 응답합니다.

 

예시로 네이버 주소를 검색하면, 당신은 네이버 서버로 요청을 보낸 것입니다.

서버란?

서버는 클라이언트의 요청을 처리하는 주체입니다. 클라이언트가 데이터를 요청했다면 데이터를 제공하고, 서버 내에서 처리만 해달라고 요청하면 해당 요청만 처리할 수 있습니다. 흔히 우리가 웹 브라우저에 주소를 입력하는 것은 새로운 화면을 그리기 위한 데이터를 달라는 요청에 해당합니다.

 

 

정확한 예시는 아니지만, 이해하기 어렵다면 클라이언트는 사용자, 서버는 사용자의 요청을 처리하는 컴퓨터라고 생각하면 됩니다.

 

다시 말하지만, 이는 정확한 예시는 아닙니다. 서버와 클라이언트의 예시 중 하나입니다

 

 


 

 

데이터베이스

데이터베이스란?

여러 사람이 데이터를 한 군데에 모아놓고 여러 사람이 사용할 목적으로 관리하는 데이터 저장소입니다

흔히 데이터베이스를 말할 때 MySQL, 오라클, 포스트그레SQL등을 이야기하지만 이것은 데이터베이스가 아닙니다

데이터베이스를 관리하기 위한 시스템의 이름입니다

다만 데이터베이스와 데이터베이스 관리 시스템은 한 쌍으로 움직이므로 둘을 하나처럼 언급할 뿐입니다

 

데이터베이스 내용은 다른 포스트에서 다루겠습니다.

 

 

 


 

IP, Port, DNS

아이피란?

인터넷에서 컴퓨터, 기기들이 서로를 식별하고 통신하기 위한 주소입니다

그렇기에 아이피를 알면 서버를 찾을 수 있습니다

하지만 서버를 이용하기 위해서는 아이피만 알아서는 안됩니다

포트까지 알아야하죠

 

포트란?

아이피가 서버를 찾기 위한 번호라면 포트는 그 서버에서 운용되고 있는 서비스를 구분하기 위한 번호입니다

 

현실로 예시를 들면

만약 당신이 친구 집에 놀러가기로 했습니다

해당 친구는 ABC아파트 101동 1201호에 살고 있습니다


아이피(IP)는 ABC아파트

포트(Port)는 101동 1201호인 것입니다

 

DNS란?

DNS는 Domain Name System의 약자입니다. 여러분의 컴퓨터의 IP를 확인해보면 IPv4 주소는 보통 192.xxx.x.x 같은 형식으로 되어 있을 겁니다.

IP와 Port를 활용해서 해당 서버에 접속한다고 했는데, 우리는 www.naver.com, www.google.com 같은 도메인 주소를 활용하여 접속합니다.

일반 사용자가 네이버, 구글 등 다양한 서버의 IP를 외워서 검색하는 것은 거의 불가능합니다. 아이피를 문자로 된 이름으로 사용할 수 있게 해주는 작업을 하는 것이 바로 DNS입니다.

간단한 설명

지금 당장은 네이버 주소를 검색해서 들어갔을 때, DNS가 네이버 주소를 네이버 서버 IP로 바꾸어준다는 것만 알면 충분합니다.

조금 더 자세한 내용은 네트워크 카테고리에서 다루겠습니다.

 

 


라이브러리와 프레임워크

백엔드 개발에 필요한 모든 코드를 온전히 혼자서 개발하려면 엄청난 시간이 들게 됩니다.

현업에서는 이미 다른 사람(단체)이 만든 라이브러리와 프레임워크를 가져와서 사용하게 됩니다

 

라이브러리란?

애플리케이션 개발에 필요한 클래스, 함수 등을 모아놓은 코드의 모음입니다

프로그래밍에서 라이브러리는 도서관이라는 의미보다는 책들의 모음이 조금 더 적절한 표현이라고 생각합니다

개발자가 원하는 기능을 구현하기 위해 코드의 모음을 가져다 쓸 수 있는 일종의 도구 역할을 하는 것입니다

 

프레임워크란?

프레임워크는 틀(frame)과 일하다(work)의 합성어로 일하기 위한 틀을 제공합니다

정해진 틀에서 개발해야 한다는 단점이 있지만 개발 효율은 굉장히 높다는 장점이 있습니다

 

정리하자면 라이브러리와 프레임워크는 개발자가 소프트웨어를 개발하기 위해 사용하는 도구이지만 사용 목적에 따라 차이가 있습니다

 

프레임워크는 애플리케이션을 개발할 때 전체적인 구조를 잡기 위해

라이브러리는 개발하는 과정에서 필요한 기능을 구현하기 위해

728x90