전체 글 203

[React.js, 스프링부트, AWS로 배우는 웹 개발] 2장 - 서비스 레이어

서비스 레이어는 컨트롤러와 퍼시스턴스 사이에서 비즈니스 로직을 수행하는 레이어이다.HTTP 요청/응답을 관할하는 컨트롤러와 데이터베이스와 연결된 퍼시스턴스와 분리되어 우리가 개발하는 로직에 집중할 수 있다. [TodoService.java]package com.example.demo.service;import org.springframework.stereotype.Service;@Servicepublic class TodoService { public String testService() { return "Test Service"; }}@Service 는 비즈니스 로직을 수행하는 서비스 레이어임을 알려주는 어노테이션[TodoController에서 TodoService 사용]import org.sprin..

개발 2024.07.22

[React.js, 스프링부트, AWS로 배우는 웹 개발] 2장 - 컨트롤러 레이어

컨트롤러 레이어는 비즈니스 로직 처리보다는 HTTP 요청/응답을 담당하는 레이어이다.HTTP는 GET/POST/PUT/DELETE/OPTIONS 등과 같은 메서드와 URI를 이용해 서버에 HTTP 요청을 보낼 수 있다.그렇다면 서버는 이 요청을 받은 후 처리를 어떻게 할까? [HTTP 요청]GET /test HTTP/1.1Host: localhost:8080Content-Type: application/jsonContent-Length: 17{ "id": 123}클라이언트가 서버 localhost:8080에 HTTP GET 메서드를 이용해 test라는 리소스를 요청함서버는 자기 주소를 제외한 /{리소스}부분과  어떤 HTTP 메서드를 사용했는지 알아야 함그 이후 해당 리소스의 HTTP 메서드에 연결된 메..

개발 2024.07.21

[React.js, 스프링부트, AWS로 배우는 웹 개발] 2장 - 레이어드 아키텍처 패턴, REST API 스타일

레이어드 아키텍처 패턴은 스프링 프로젝트 내부에서 어떻게 코드를 적절히 분리하고 관리할 것이냐에 대한 것이다. REST 아키텍처 패턴은 클라이언트(브라우저)가 우리 서비스를 이용하려면 어떤 형식으로 요청을 보내고 응답을 받는지에 대한 것이다. 클라이언트는 정해진 메서드로 우리 서비스를 이용할 것이다. 이렇게 REST 아키텍처 패턴을 따라 설계 및 구현된 서비스를 RESTful 서비스라고 한다.  레이어드 아키텍처 (Layered Architecture)레이어드 아키텍처는 애플리케이션을 구성하는 요소들을 수평으로 나눠 관리하는 것이다. [레이어가 없는 웹 서비스]public String getTodo(Request request) { // request validation if(request.use..

개발 2024.07.20

[React.js, 스프링부트, AWS로 배우는 웹 개발] 2장 - 스프링부트 실행

스프링 부트 실행 프로세스스프링 부트 애플리케이션 실행한다.@ComponentScan 어노테이션이 있는 경우 베이스 패키지와 그 하위 패키지에서 @Component가 달린 클래스를 찾는다.필요한 경우 @Component가 달린 클래스의 오브젝트를 생성한다.이때 생성하려는 오브젝트가 다른 오브젝트에 의존한다면, 즉 멤버 변수로 다른 클래스를 갖고 있다면 그 멤버 변수 오브젝트를 찾아 넣어줘야 한다. @Autowired를 사용하는 경우 스프링이 그 오브젝트를 찾아 생성해 넣어준다.1) @Autowired에 연결된 변수의 클래스가 @Component가 달린 클래스인 경우 스프링이 오브젝트를 생성해 넘겨준다.2) @Autowired에 연결된 변수의 클래스가 @Bean 어노테이션으로 생성하는 오브젝트인 경우 @B..

개발 2024.07.20

[React.js, 스프링부트, AWS로 배우는 웹 개발] 2장 - 스프링부트 설정

자바 서블릿(Java Servlet)  >> DispatcherServlet 대체[Spring Boot 사용 전]자바 서블릿(Java Servlet)대표 서블릿 컨테이너 ( Apache Tomcat, Jetty, JBoss 등)클라이언트의 요청을 처리하고 서버 측에서 동적인 콘텐츠를 생성웹 요청을 기반으로 각 알맞은 비즈니스 로직을 호출하는 역할서블릿 기반의 서버를 사용하려면 개발자는 javax.servlet.http.HttpServlet을 상속받는 서브 클래스를 작성해야 한다.그러면 서블릿 컨테이너가 서블릿 서브 클래스를 실행시킨다.http 요청이 서버로 전달되면 웹 서버는 받은 요청을 해석해 해당되는 서블릿 클래스를 실행한다.package com.example.Demo;import java.io.*;..

개발 2024.07.19

[React.js, 스프링부트, AWS로 배우는 웹 개발] 2장 - 의존성 주입

스프링 프레임워크와 의존성 주입의존성 주입 (DI, Dependency Injection)객체가 다른 객체에 의존하는 것을 명시적으로 선언하고 외부에서 해당 객체의 인스턴스를 주입하는 설계 패턴 의존성 [생성자 내부에서 오브젝트 초기화]public class TodoService { private final FileTodoPersistence persistence; public TodoService() { this.persistence = new FileTodoPersistence(); } public void create(...){ ... persistence.create(...); }} TodoService 클래스는 Todo 목록을 관리하는 기능이다.FileTodoPersis..

개발 2024.07.18

[React.js, 스프링부트, AWS로 배우는 웹 개발] 1장 - HTTP 메서드

웹 개발 경험 없이는 컴퓨터 시스템 흐름을 평생 이해하기 어렵겠다 싶어서 개발... 까짓거 해보자 싶어서 냅다 도서관에 달려가 책 한 권을 빌렸다.  애플리케이션의 아키텍처HTML/CSS/React.js프론트엔드 애플리케이션 개발에 사용프론트엔드 클라이언트를 반환하는 서버는 역할이 하나이다. React.js 애플리케이션을 반환하는 것이다!스프링부트백엔드 애플리케이션 개발에 사용스프링부트로 REST API를 구현. 이 API는 프론트엔드 애플리케이션이 사용한다. HTTP ( HyperText Transfer Protocol)  애플리케이션 레벨(L7)의 네트워크 프로토콜하이퍼텍스트 ('다른 문서로 향하는 링크가 있는 텍스트') + 트랜스펄 프로토콜 ('통신 규약')하이퍼링크를 위한 마크업 언어 사용자는 브..

개발 2024.07.16

[React.js, 스프링부트, AWS로 배우는 웹 개발] 1장 - 어노테이션

어노테이션(Annotation)Java 코드에 메타데이터를 추가하는 특별한 형식의 주석특정 동작을 수행하기 위해 사용빈 정의, 의존성 주입 등에 사용@Component : 클래스가 빈으로 등록됨@Autowired: 의존성 주입을 자동으로 처리@Service : 서비스 계층에 사용되는 빈@Repository: 데이터 접근 계층에 사용되는 빈@Controlloer: 웹 계층에 사용되는 빈계층서비스 계층데이터 계층웹 계층목적비즈니스 로직 처리데이터베이스와 상호작용프론트. 컨트롤러와 뷰로 구성  XML 설정 (XML Configuration) 애플리케이션의 설정 정보Spring 컨테이너가 관리할 빈을 XML 파일에 설정   ( ex_  )  @SpringBootAppli..

개발 2024.07.16

여러 Account 및 VPC에서 하나의 CodePipeline 공유

참고 자료: https://youtu.be/F5ZPD3Z53so?si=DOOXLH6oAMIRY1yp여러 Account 및 VPC에서 여러 CodePipeline 구성 Account 및 VPC 갯수가 많은 대규모 시스템일 경우, 환경별 CodePipeline을 구성하고 Sync하는 방식으로 진행하는 것이 옳을 것 같다.하지만 비용 및 공수가 환경별로 들며, 푸시를 환경별로 해야하는 부담이 있다. 여러 Account 및 VPC에서 하나의 CodePipeline 구성Account 및 VPC 갯수가 많지 않은 시스템을 구성하고 있을 경우,하나의 코드파이프라인을 환경별 계정에서 공유하는 방식을 권장한다. Cloud A 계정에 CodePipeline을 구성하고, 환경별 Account(Dev, Product) 및 V..

AWS/Project 2024.07.13