느리더라도 꾸준히

회고록(27) - 웹 애플리케이션 아키텍쳐와 Spring boot 본문

(CodeStates)Daily memoir

회고록(27) - 웹 애플리케이션 아키텍쳐와 Spring boot

테디규 2022. 12. 7. 23:30

1. 데일리 일기

오늘 라디오에서는 여러 공감가는 주제들이 나왔다. 내가 평소에 느끼는 " 내가 잘하고 있는게 맞는건가?...", "개발로 취업 할 수 있을까?", "요즘 시장도 안좋아서.. 개발쪽 수요가 주는건 아닐까 " 등 과 같은 불안감들은 모두 안고 사는것 같다. 심리학적으로 인간은 불안을 정말 싫어하지만, 애석하게도 불안을 없애는 방법은 없다. 오히려 불안을 인정해야 불안이 주는 미지의 두려움에서 벗어 날 수 있다.

오늘의 나는 어제의 나보다 성장했다. 계속 부족한 부분들을 메꾸어 가다 보면 나도 모르게 좋은 결과에 도달 할 수 있을 것이다. 또한 실력있는 개발자는 언제나 부족하다. 위의 불안감을 인정하고 더 좋은 개발자가 되려고 노력해보자.

2. 오늘 배운 내용

웹 어플리케이션 아키텍처

아키텍처란?

일반적인 아키텍처란 건축물에서 요구사항에 맞는 건물, 구조물의 컨셉을 잡아놓은 설계도를 의미한다.

이를 어플리케이션에 비유해보자. 아키텍처란 애플리케이션에 필요한 구성요소와 동작원리 컨셉을 가지고 있는 청사진이라고 볼 수 있다.

시스템 아키텍처

하드웨어와 소프트웨어를 모두 포함하는 어떤 시스템의 전체적인 구성과 동작원리를 그림으로 표현한 것을 말한다.

소프트웨어 아키텍처

컴퓨터내의 모든 프로그램들(소프트웨어)의 구성을 그림으로 나타낸 것을 말한다.

웹 애플리케이션 아키텍처(애플리 케이션 아키텍처 중 하나)

애플리 케이션이란 응용 프로그램으로 스마트폰, PC내 하나의 프로그램을 지칭할 수도 있지만, 넓게는 클라이언트의 요청을 처리하는 서버 애플리케이션을 의미 할 수도 있습니다.

우리는 웹 개발자를 준비하고 있으므로, 후자의 의미로 애플리케이션을 자주 사용할 것입니다. 이러한 애플리케이션의 관점으로 웹 애플리케이션 아키텍처의 종류중 하나인 계층형 아키텍처를 살펴봅시다.

계층형 아키텍처(N티어)

해당 아키텍처는 3부분을 Layer를 나눌 수 있습니다.

  1. API 계층(API Layer), Presentation Layer
    • 클라이언트의 요청을 받아들이는 계층입니다.
  2. 서비스 계층(Service Layer)
    • API 계층에서 받은 요청을 업무 도메인(비즈니스 지식)의 요구사항에 맞게 비즈니스 적으로 처리하는 계층입니다.
  3. 데이터 액세스 계층(Data Access Layer)
    • 서비스 계층에서 처리된 데이터를 데이터베이스 등의 데이터 저장소에 저장하기 위한 계층

Spring Boot

Spring Boot란?

개발자가 Spring을 더 손쉽게 사용하도록 도와주는 도구이다.

어떻게 도와주는데?

Spring Framework로만 작성한 코드는 코드작성은 쉬울지 몰라도 Spring에 필요한 설정을 지정하는데 복잡함이 존재했습니다.(XML 의 긴 설정파일, 호환이 되지 않는 모듈, Java버전등으로 인한 오류 발생일 막기 위한 시간)

Spring Boot는 이러한 설정의 복잡함을 매우 간편하게 해결해 줍니다. 아래는 Spring Boot가 제공하는 기능입니다.

  • XML 기반의 복잡한 설계 방식 지양

  • 의존 라이브러리의 자동 관리

    • 자동으로 의존된 라이브러리들을 가져와줌
  • 애플리케이션 설정의 자동 구성

    • 설정정보에 적은 내용을 바탕으로 자동 설정을 구성합니다.
    • spring-boot-starter-web : 애플리케이션이 웹 애플리케이션이라고 추측한 뒤, web 애플리케이션을 띄울 서블릿 컨테이터 설정을 자동으로 구성한다.
    • spring-boot-starter-jdbc : 애플리케이션에 DB 연결이 필요하다고 추축한 뒤 JDBC 설정을 자동으로 구성한다.
  • 프로덕션급 애플리케이션의 손쉬운 빌드

  • 내장된 WAS를 통한 손쉬운 배포

핵심 컨셉

Spring configuration은 Spring Boot를 통해 Spring에게 맡겨버리고, 개발자는 비즈니스 로직에만 집중하자 라는 컨셉을 가지고 있다.

혼자 공부로 새로 알게 된 내용

배포란?

  • 빌드가 완성된 실행 가능한 파일을 사용자가 접근할 수 있는 환경에 배치시키는 일
  • 그러므로 우리는 배포 이후, 서버에서 제공하는 웹페이지에 접근이 가능해진다.

Build란?

  • 컴파일된 코드를 실제 실행할 수 있는 상태로 만드는 일
  • 즉 소스 코드 파일을 컴퓨터에서 실행할 수 있는 독립적인 형태로 변환하는 과정과 그 결과를 말합니다.

프로덕션 단계

  • 프로그램을 만들고, [사용자에게 배포하기 전]까지 유지 보수하는 모든 과정을 말한다.

'(CodeStates)Daily memoir' 카테고리의 다른 글

회고록(29)-AOP  (0) 2022.12.14
회고록(28)-스프링 컨테이너와 DI  (0) 2022.12.11
회고록(26) - Spring Framework의 특징  (0) 2022.12.07
회고록(25) - 스키마  (0) 2022.12.02
회고록(24)- SQL  (0) 2022.12.01
Comments