Gradle은 빌드 자동화 시스템을 말한다.
우리가 작성한 Java 코드를 설정에 맞게 자동으로 빌드해준다!
(Java 소스 코드를 실행가능한 jar파일로 만들어준다.)
네트워크는 여러대의 컴퓨터 또는 장비가 서로 연결되어서 정보를 주고 받을 수 있게 도와주는 기술이다.

사용자(Clients)는 브라우저를 이용하여 서버에 정보를 요청하고 응답을 받는다.
이때 사용자의 요청이 서버에 도달하기 위해서는 해당 서버의 정보가 필요하다.
그 해당 서버에 정확하게 도달할 수 있게 제공되는 정보가 IP주소이다.
위치 주소라고 생각하면 되고, 네트워크상에서의 데이터 송/수신은 이 주소를 기준으로 이루어진다.
아래는 택배를 예시로한 표이다.
| 택배 | 네트워크 | |
|---|---|---|
| 주소(IP) | 서울시 --구 --로 --- | 192.168.*** |
| 받는 사람(포트) | Robbie | 8080 |
인터넷을 통해 HTTP를 이용하여 웹상의 클라이언트의 요청을 응답해주는 통신을 하는 일종의 컴퓨터이다.


위에서 말한 WebServer와 WAS(Web Application Server)의 차이점에 대해서 우선 말해보겠다.
웹서버는 정적인 콘텐츠를 사용자에게 전달해주는 역할을 하며, 역할은 크게 2가지로 구분된다.
1. 정적인 콘텐츠 즉, 이미 완성이 되어있는 HTML과 같은 문서를 브라우저로 전달한다.
2. 브라우저로부터 '로그인하여 MyPage를 요청'과 같은 동적인 요청이 들어왔을때 웹서버 자체적으로 처리하기 어렵기 때문에 해당 요청을 WAS에 전달한다.
WAS는 웹서버와 똑같이 HTTP 기반으로 동작이 된다.
웹서버에서 할 수 있는 기능 대부분을 WAS에서도 처리할 수 있다.
이를 사용하면 로그인,회원가입을 처리하거나 게시물을 조회하거나 정렬하는 등의 다양한 로직들을 수행하는 프로그램을 동작시킬 수 있다. (Tomcat, JBoss....)
그러면 위에서 말한 Apche Tomcat이란 무엇일까?
Tomcat은 위에서 말했듯 WAS이다, 동적인 처리를 할 수 있는 웹서버를 만들기 위한 웹컨테이너이기 때문이다.

위에서 보는 것처럼 Apache Tomcat은 Apache와 Tomcat이 합쳐진 형태로 정적인 데이터 처리와 동적인 데이터 처리를 효율적으로 해줄 수 있다.
나는 SpringBoot가 Spring인줄알았는데 그건 아니고 Spring이 발전되어가며 나온게 SpringBoot라고 한다.
Spring 프레임워크는 AOP, IoC/DI등과 같은 핵심기능들을 가지고있는데, 이 기능들을 사용하기 위해서는 xml 설정들이 과하게 필요하다는 불편함이 있었고, 이를 해결하기 위해 나온 것이 SpringBoot이다.(2014년!)
xml설정대신 Java의 애너테이션 기반의 설정을 적극적으로 사용하고 있기때문에 간편하게 설정할 수 있다.(대신 외울게..엄청나겠지..)
또한, 외부 라이브러리나 하위 프레임워크들의 의존성관리도 매우 쉬워졌다.
이전에는 호환성을 직접 확인해가며 의존성들을 설정해야했지만 Springboot에서는 Spring-boot-starter-web첢 필요한 외부 라이브러리들과 프레임워크들을 의존성에 맞게 starter로 묶어서 제공하여 각각의 버전 호환성을 직접 확인할 필요가 없어졌다.
또, 위에서 봤던 Apache Tomcat도 내장되어있다!
API개발을 빠르고 쉽게 구현할 수 있도록 도와주는 소프트웨어 플랫폼으로
API에 맞춰 HTTP 요청을 서버에 보내고 응답을 확인하는 작업을 간편하게 도와주는 플랫폼이다.
그렇다면 계속 나오는 HTTP란 무엇일까!
HyperText Transfer Protocol의 약자로써 데이터를 주고받는 양식을 정의한 통신 규약중 하나이다.
(통신 규약 : 컴퓨터끼리 데이터를 주고 받을 때 정해둔 약속)

위에서 계속 언급한것처럼 Browser는 server에서 request하고 server는 그에 맞는 데이터를 response하며 서로 소통한다.
이는 크롬과 같은 브라우저의 개발자도구(F12)를 눌러 네트워크 탭을 열어서 좌측 Name목록 아래 요청 클릭으로 Headers와 Response탭을 통해 확인도 가능하다!
여기서 Headers의 General을 보면 status Code라는 것이 나오는데 이에 대한 정보는 아래와 같다.
테스트 코드는 말 그대로 테스트를 할 수 있는 코드를 말한다.
개발 코드 배포 전 버그를 최대한 많이 찾아내는 법은 바로 테스트이기 때문에 다양한 방법으로 테스트를 해보아야한다. 모~든 동작을 한번씩!!
테스트는 크게보면 두가지가 있는데 블랙박스 테스팅과 개발자 테스트이다.
블랙박스 테스팅은 말그대로 블랙박스, 내부구조나 동작원리 등 아무것도 모르는 상태에서 사용자 입장에서의 동작을 검사하는 방법을 말한다.
누구나 테스트가 가능하지만 기능이 증가될수록 테스트의 범위가 증가하여 사람들이 많이 필요해질수 있고, 사람에 따라 테스트 퀄리티가 달라질 수 있는 단점이 있다.
개발자 테스트는 직접 본인이 작성한 코드를 검증하기 위해 테스트 코드를 작성하는 것을 의미한다.
빠르고 정확한 테스트와 테스트 자동화가 가능하고, 리팩토링이나 기능 추가를 할때 더욱 편리한 장점이 있지만, 개발시간이 오래걸리고 해당 테스트 코드를 유지보수하는 비용도 증가하는 단점이 있다.
여기서 Spring은 테스트 코드를 작성을 잘 할 수 있는 환경을 제공해준다.이는 main패키지가 아닌 test패키지에서 JUnit 프레임 워크를 사용하여 테스트 코드를 작성한다.
Lombok(이하 롬복)은, 자바 프로젝트를 진행하는데 거의 필수적으로 필요한 메서드/생성자 등을 자동 생성해줌으로써 코드를 절약할 수 있도록 도와주는 라이브러리이다.
이는 프로젝트 생성시 추가할수도 있고,
설정-검색창[Annotation Processors]-Enable 체크후 ok / plugins - Lombok 설치
위 과정을 통해 설치가 되어있지않은 스프링 프로젝트에서도 사용이 가능하다.
Spring과 관련된 설정을 할때 사용되는 파일이다.
Spring과 SpringBoot의 차이에서 개발에 필요한 설정정보들이 자동으로 설정된다고 했는데 이 파일을 통해 자동으로 설정되고있는 설정값을 쉽게 수정할 수 있다.
또한, DB연결 시 DB의 정보를 제공해야하는데 이 경우에도 이 파일을 이용하여 쉽게 값을 전달할 수 있다.