백엔드 사전 지식 (1) - DNS 부터 테스트 그리고 배포까지 살펴보기
1. DNS란?
: Domain Name System으로 IP는 인터넷에서 주소 역할을 한다. IP는 총 32비트로 이루어진 IPv4와 128비트로 이루어진 IPv6가 있는데 보통 이런 주소값을 일일이 외우지는 않기 때문에 사람이 외우기 편한 언어로 된 주소를 사용한다.
우리는 이것을 도메인이라고 하고 이런 도메인 주소를 IP 주소로 변경하는 것을 DNS라고 한다.
2. DNS와 IP를 사용한 서버 / 클라이언트 통신 방법
1) 클라이언트가 DNS 서버로 www.example.com 으로 접속을 시도 하면 DNS 서버로 IP를 물어본다.
2) DNS 서버에서 IP를 클라이언트에게 알려준다.
3) 전달 받은 IP로 웹 서버로 요청을 보낸다.
4) 웹 서버가 클라이언트에게 응답을 보낸다.
3. HTTP로 요청을 보냈을 시 서버에서 처리하는 방법
: 서버에서는 HTTP 요청을 받아서 다양한 처리를 할 수 있는 프로그램을 실행 시켜야 한다. 클라이언트 요청은 이미지 같은 파일 일 수도 있고 데이터 처리 작업을 원할 수도 있다. 백엔드에서는 이를 분리하는데 웹 서버와 WAS(Web Application Server)로 구분할 수 있다.
1) 웹 서버
: 요청된 웹페이지나 정보를 제공하는 서버, 주로 정적인 콘텐츠를 제공한다.
: 아파치 HTTP Server , Nginx , IIS 등이 있다.
2) WAS
: 동적인 웹 어플리케이션을 실행하는데 사용 되는 서버. 단독으로 사용하기 보단 웹 서버 뒤에서 요청에 대한 응답을 제공하는 역할을 한다.
: 아파치 톰캣 , 웹스피어 등이 있다.
또한 데이터는 보통 DB에 저장하게 되며, 클라이언트가 자주 요청하는 데이터는 캐시에 둔다. 이 때 캐시란 디스크가 아닌 메모리에 데이터를 저장해서 읽는 속도를 높이는 법을 말한다.
보통 WAS에 사용하는 프로그램을 자체적으로 만들기 보다는 대부분 프레임워크를 사용하는 편
4. 테스트와 배포
1) 단위 테스트
: 하나의 작은 기능이 잘 동작하는지 테스트 코드를 작성하는 것을 말한다.
2) 통합 테스트
: 함께 동작해야 하는 데이터베이스나 다른 서버 등과 의존성이 있는 상태에서 함께 테스트 하는 것을 말한다.
3) 배포
: 개발하고 테스트가 완료된 코드를 서버에 전달하고 실행하는 것을 말한다.
: 소스 코드를 배포해서 실행하는 경우도 있으며, 자바처럼 jar같이 패키지 형태를 받아 실행하거나, 컨테이너 환경을 이용해 개발과 실제 운영 서버의 환경을 동일하게 맞추어 테스트 할 수 있다.
이렇게 백엔드로 기본적으로 알아야 할 과정과 그 정의에 대해 알아보았다. 이렇게 조금씩 배워나가는 것도 즐거움이라 생각하고 즐겁게 배워보려고 한다.