⏰ 2024. 05. 14 화

✔ 스프링 이론 강의를 듣고 정리하면서 작성했습니다.

💡 목차

  1. Sping과 SpringBoot
  2. 그래들(Gradle)
  3. 서버(Server)
  4. API
  5. HTTP
  6. 테스트

스프링(Sping과)과 스트링부트(SpringBoot)

스프링

스프링은 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크이다. 대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부 표준프레임워크의 기반 기술로서 쓰이고 있고, 동적인 웹 서버를 개발하기 위한 여러 가지 서비스를 제공하고 있다.

스프링의 핵심 기능으로 IoC(Invertion of Control: 제어 역행), Di(Dependency Injection: 의존성 주입), AOP(Aspect-Oriented Programming: 관점지향 프로그래밍)를 가지고 있다.

하지만, 이러한 핵심 기능들을 사용하기 위해서 수많은 XML 설정이 필요하고, 모든 설정을 개발자 스스로 해줘야하는 불편함 때문에 스프링부트가 등장했다.

스프링부트

스프링부트는 스프링의 수많은 XML 설정과 기본 설정들을 Java의 애너테이션 기반의 설정으로 아주 간편하게 사용할 수 있는 프레임워크이다.

스트링 부트의 장점으로는 웹서버의 개발에 필요한 기본적인 정보들을 default로 하여 자동으로 설정해주고, 추가로 필요한 외부 라이브러리들 starter의 "dependencies"에 작성하는 것으로 외부 라이브러리들과 하위 프레임워크들의 의존성 관리가 매우 쉽다.
그리고, 가장 강력한 장점은 스프링에서는 직접 다운로드 받고 설정해야 하는 Apache Tomcat이 내장되어 있다는 점이다.

그래들(Gradle)

Gradle

Gradle은 Java 소스 코드를 설정에 맞게 자동으로 실행 가능한 결과물로 만들기 위한 jar 파일로 만들어 주는 빌드 자동화 시스템이다.

Gradle은 빌드 스크립트인 build.gradle의 "dependencies"에서 라이브러리들의 의존성을 자동으로 쉽게 관리할 수 있다.

⚡ 라이브러리

필요한 기능들이 모여있는 코드의 묶음으로 미리 작성된 라이브러리들을 사용하여 기능을 빠르고 쉽게 구현할 수 있다.

서버(Server)

네트워크(Network)

Network는 여러대의 컴퓨터 또는 장비가 서로 연결되어서 정보를 주고 받을 수 있게 도와주는 기술이다. 특히, 네트워크를 통해 사용자의 요청을 해당 요청에 대한 응답을 줄 수 있는 서버에 전달해주고, 해당 요청에 대한 응답을 받을 수 있다.

클라이언트(Client)와 서버(Server)

Client는 브라우저를 이용해 서버에 정보를 요청하는 사용자이고, 이때 사용자의 요청을 서버에 전달하려면 서버의 정보, 즉 IP주소가 필요하다.

네트워크 상에서 데이터(요청/응답 등)의 송/수신은 이 IP주소를 기준으로 이뤄진다. 정확하게는 IP주소와 포트번호를 알아야한다.

웹 서버

웹 서버는 HTTP를 이용해 클라이언트의 요청을 응답해주는 통신을하는 일종의 컴퓨터, 즉 서버이다. 기본적으로 클라이언트가 웹 서버에 요청할 때 API를 사용한다.

  • WS(Web Server)와 WAS(Web Application Server)

WS는 HTTP의 요청을 받아들여 HTML 문서과 같은 정적인 콘텐츠를 사용자에게 바로 전달하고, 동적인 요청이 들어 왔을 때는 WS 자체적으로 처리가 어려워 WAS에 요청을 전달한다.

WAS는 동적인 콘텐츠 전달과 다양한 로직을 수행하는 프로그램을 동작 가능하고, 또한 WS의 정적인 콘텐츠도 처리가 가능하다. WAS 종류로는 Tomcat과 JBoss가 있다.

API

API

API는 다른 소프트웨어 시스템의 애플리케이션과 통신을 위해 우리가 규칙을 정의한 것이다. 개발자는 다른 애플리케이션과 통신할 수 있도록 API를 표시하거나 생성해야한다.
표시하고 생성된 API로 요청해 수행하면 정해진 결과물을 반환 받는다.

  • RESTful 한 API (REST API)
    • API를 CRUD(읽기, 쓰기, 수정, 삭제)에 해당하는 GET, POST, PUT, DELETE 메서드를 사용해서 작성하고 적절하게 HTTP를 준수해서 설계해야 한다.

HTTP

HTTP(통신 규약)

데이터를 주고 받는 양식을 정의한 통신 규약, 즉 컴퓨터 끼리 데이터를 주고 받을 때 정해둔 약속이다.

HTTP에는 언제나 Request와 Response라는 개념이 존재한다.

테스트

테스트

테스트는 프로그래밍을 실행하는 과정에서 나타날 수 있는 버그를 찾는 것을 의미한다.
테스트의 종류로는 블랙박스 테스트과 개발자 테스트가 있다.

버그

버그는 소프트웨어가 예상하지 못한 결과를 내는 것을 의미하고, 소스코드나 설계과정에서의 오류 때문에 발생한다.

테스트 종류

  1. 블랙박스 테스트

    • 서비스 사용자가 동작을 검사하는 것으로, 누구나 테스트 가능하다는 장점이 있지만, 기능마다 사람 수가 계속 증가해야하고, 각 사용자마다 테스트 퀄리티 차이가 나기 때문에 QA 직군이 생길 정도로 비효율적이다.
  2. 개발자 테스트

    • 개발자가 직접 검증하기 위한 테스트 코드를 작성하는 것으로, 빠르고 정확한 자동화된 테스트가 가능하지만, 테스트 코드도 개발해야하기 때문에 개발 시간이 오래 걸리고, 테스트 코드 또한 유지보수 해야한다.
profile
개발하는 미어캣

0개의 댓글