전체 글

Books/스프링 부트와 AWS로 혼자 구현하는 웹 서비스

[스프링 부트와 AWS로 혼자 구현하는 웹 서비스] 6장. AWS 서버 환경을 만들어보자 - AWS EC2

'스프링 부트와 AWS로 혼자 구현하는 웹 서비스'를 읽고 정리한 글입니다. 특정 시간에만 트래픽이 몰린다면 유동적으로 사양을 늘릴 수 있는 클라우드가 유리하다. 클라우드 서비스는 쉽게 말하면 인터넷을 통해 서버, 스토리지(파일 저장소), 데이터베이스, 네티워크, 소프트웨어, 모니터링 등의 컴퓨팅 서비스를 제공하는 것이다. 클라우드의 형태 Iaas (Infrastructure as a Service) 기존 물리 장비를 미들웨어와 함께 묶어둔 추상화 서비스 가상머신, 스토리지, 네트워크, 운영체제 등의 IT 인프라를 대여해 주는 서비스 AWS의 EC2, S3 등 Paas (Platform as a Service) Iaas에서 한번 더 추상화한 서비스 많은 기능이 자동화 되어 있음 AWS의 Beanstalk..

Spring/스프링 핵심 원리 - 기본편

[Spring] 스프링 핵심 원리 - 기본편: 스프링 핵심 원리 이해2 - 객체 지향 원리 적용

스프링 핵심원리 - 기본편을 정리한 글입니다. 저번에 작성했던 회원, 주문 할인 정책을 객체 지향 원리를 적용해보자. 이번에는 새로운 할인 정책을 추가해야 한다. 막상 할인을 적용해보면 DIP, OCP를 위반하는 문제가 생긴다. 이번 장에서 이런 DIP, OCP를 해결하는 과정과 스프링이 왜 필요한지 이해해보자. 마지막에 순수한 자바 코드를 스프링 컨테이너에서 동작하도록 바꿔보자. 새로운 할인 정책 개발 이전에 구현했던 회원 주문 할인 정책에서 중요한 부분이 있었다. 할인 정책은 모든 VIP는 1000원을 할인해주는 고정 금액 할인을 적용해달라. (나중에 변경 될 수 있다.) 할인 정책은 변경 가능성이 높다. 회사의 기본 할인 정책을 아직 정하지 못했고, 오픈 직전까지 고민을 미루고 싶다. 최악의 경우 ..

Spring/스프링 핵심 원리 - 기본편

[Spring] 스프링 핵심 원리 - 기본편: 스프링 핵심 원리 이해1 - 예제 만들기

스프링 핵심원리 - 기본편을 정리한 글입니다. 지금부터 역할과 구현을 나눠서 개발을 진행할 것이다. 주의할 점은 스프링의 도움 없이 순수한 자바만 사용하여 개발할 것이다. 실제 요구사항이 변경됐을 때 다형성, OCP, DIP가 잘 지켜지면서 유연하게 대처가 되는지 알아볼 것이다. 시작하기 전에 스프링 없이 순수한 자바로 진행할 것이지만, 초기에 편리함을 위해 스프링 부트를 사용하여 세팅한다. 나중에 스프링을 적용할 때 라이브러리들이 필요하기 때문에 일단 스프링 부트를 사용하여 초기 세팅을 한다. 프로젝트 생성 준비물 Java 11 설치 IDE: 인텔리제이 https://start.spring.io 에서 스프링 프로젝트 생성 Dependencies는 아무것도 선택하지 않으면 스프링 부트가 스프링 핵심 라이..

Books/스프링 부트와 AWS로 혼자 구현하는 웹 서비스

[스프링 부트와 AWS로 혼자 구현하는 웹 서비스] 5장. 스프링 시큐리티와 OAuth 2.0으로 로그인 기능 구현하기

'스프링 부트와 AWS로 혼자 구현하는 웹 서비스'를 읽고 정리한 글입니다. 지금까지 CRUD API 작성과 머스테치를 통해 간단한 게시판 화면을 구현했다. 이제 로그인 기능을 만들어 보자. 프론트엔드에서 URI 이동 -> HTTP 요청 받음 -> HTTP 요청 컨트롤러에 전송-> 서비스에서 로직 처리, 반환 스프링 시큐리티(Spring Secourity)는 인증(Authentication)과 인가(Authorization, 권한 부여) 기능을 가진 프레임워크다 이번 장에서는 스프링 시큐리티와 OAuth 2.0을 구현한 구글 로그인을 연동하여 로그인 기능을 만들어 보자. 5.1. 스프링 시큐리티와 스프링 시큐리티 Oauth2 클라이언트 많은 서비스에서 로그인 기능을 소셜 로그인 기능을 사용한다. 왜 그럴..

Books/스프링 부트와 AWS로 혼자 구현하는 웹 서비스

[스프링 부트와 AWS로 혼자 구현하는 웹 서비스] 4장. 머스테치로 화면 구성하기

'스프링 부트와 AWS로 혼자 구현하는 웹 서비스'를 읽고 정리한 글입니다. 머스테치(Mustache)를 통해 화면 영역을 개발해보자. 서버 템플릿 엔진과 클라이언트 템플릿 엔진의 차이 머스테치를 통해 기본적인 CRUD 화면 개발 4.1 서버 템플릿 엔진과 머스테치 소개 템플릿 엔진이란, 지정된 템플릿 양식과 데이터가 합쳐져 HTML 문서를 출력하는 소프트웨어를 뜻한다. 서버 템플릿 엔진: JSP, Freemarker, Thymeleaf ... 클라이언트 템플릿 엔진: React, Vuew ... 서버 템플릿 엔진을 이용한 화면 생성은 서버에서 Java 코드로 문자열을 만든 뒤 이 문자열을 HTML로 변환하여 브라우저로 전달한다. Vue.js나 React.js를 이용한 SPA(Single Page App..

Books/React.js, 스프링 부트, AWS로 배우는 웹 개발 101

[React.js, 스프링 부트, AWS로 배우는 웹 개발 101] Ch 3.1 프론트엔드 개발 환경 설정

'React.js, 스프링 부트, AWS로 배우는 웹 개발 101'을 읽고 정리한 글입니다. 학습 내용 브라우저의 동작 원리 Node.js SPA와 React.js 실습 내용 브라우저의 개발자 툴 프론트엔드 개발 환경 설정(VS Code) Node.js 설치 NPM 실습 리액트 애플리케이션 생성 및 실행 3.1.1 Node.js와 NPM 설치 Node.js 과거에 자바스크립트는 브라우저 밖에서는 실행할 수 없었다. Node.js는 자바스크립트를 내 컴퓨터에서 실행할 수 있게 해주는 프로그램, 즉 자바스크립트 런타임 환경이다. Node.js는 구글 크롬의 V8 자바스크립트 엔진을 실행한다. 자바스크립트를 브라우저 밖에서 실행할 수 있다는 것은 클라이언트 언어뿐만아니라 서버 언어로도 사용할 수 있다는 뜻이다..

Books/React.js, 스프링 부트, AWS로 배우는 웹 개발 101

[React.js, 스프링 부트, AWS로 배우는 웹 개발 101] Ch 2.3 서비스 개발 및 실습

'React.js, 스프링 부트, AWS로 배우는 웹 개발 101'을 읽고 정리한 글입니다. 실습 내용 Logger 설정 HTTP POST를 이용하는 Create REST API 개발 HTTP GET을 이용하는 Retrieve REST API 개발 HTTP UPDATE를 이용하는 Update REST API 개발 HTTP DELETE를 이용하는 Delete REST API 개발 스프링과 JPA 어노테이션을 기반으로 생성, 검색, 수정, 삭제 API를 작성해보자. 구현 과정은 퍼시스턴스 => 서비스 => 컨트롤러 순으로 한다. 로그 어노테이션 서비스 구현에 앞서 디버깅을 위한 로그 설정을 하자. 가장 간단하게 출력하는 방법이 있지만 기능이 제한적이다. 어떤 로그인 정보를 위한 것이고 어떤 로그는 디버깅을 ..

Books/React.js, 스프링 부트, AWS로 배우는 웹 개발 101

[React.js, 스프링 부트, AWS로 배우는 웹 개발 101] Ch 2.2 백엔드 서비스 아키텍처

'React.js, 스프링 부트, AWS로 배우는 웹 개발 101'을 읽고 정리한 글입니다. 학습 내용 레이어드 아키텍처 패턴 REST 아키텍처 스타일 스프링 어노테이션 JPA와 스프링 Data JPA 실습 내용 Model/Entity와 DTO 클래스 Controller, Service, Persistence 클래스 테스팅용 REST API 레이어드 아키텍처 패턴은 스프링 프로젝트 내부에서 어떻게 코드를 적절히 분리하고 관리할 것이냐에 대한 것이다. 코드를 적절히 분리하고 관리하는 것은 코드 베이스가 커질수록 중요하다. REST 아키텍처 스타일은 클라이언트(브라우저)가 우리 서비스를 이용하려면 어떤 형식으로 요청을 보내고 응답을 받는지에 대한 것이다. 클라이언트는 몇 개의 정해진 메서드로 우리 서비스를 ..

Spring/스프링 핵심 원리 - 기본편

[Spring] 스프링 핵심 원리 - 기본편: 객체 지향 설계와 스프링

스프링 핵심원리 - 기본편을 정리한 글입니다. 스프링의 탄생 2000년 초반에 자바 표준 기술 중 EJB(Enterprise Java Beans)라는 기술이 있었다. 지금으로 치면 스프링, JPA 등을 합쳐놓은 기술이다. EJB가 가지는 장점들, 컨테이너, 트랜잭션 관리, 분산 기술, ORM이 있었기 때문에 비싼 값에도 많이 사용되었다. 많이 사용되는데도 불구하고 여러 단점이 있었다. EJB는 배우기 매우 어렵고, 복잡하고 느리다. 즉, 개발자들이 사용하기 어려웠다. EJB에 의존하여 코드를 짜야하는 불편함을 해결하기 위해 개발자들이 순수한 자바(POJO, Plan Old Java Object)로 개발하고자 하였다. 이런 와중에 개빈 킹과 로드 존슨이라는 두 명의 개발자가 오픈소스를 만들기 시작한다. 스..

Books/스프링 부트와 AWS로 혼자 구현하는 웹 서비스

[스프링 부트와 AWS로 혼자 구현하는 웹 서비스] 3장. 스프링 부트에서 JPA로 데이터베이스 다뤄보자

'스프링 부트와 AWS로 혼자 구현하는 웹 서비스'를 읽고 정리한 글입니다. ORM은 객체를 매핑하는 것이고, SQL Mapper는 쿼리를 매핑한다. JPA 소개 현업 프로젝트 대부분이 애플리케이션 코드보다 SQL이 더 많다. 이는 관계형 데이터베이스가 SQL만 인식할 수 있기 때문인데, 각 테이블마다 기본적인 CRUD SQL을 매번 생성해야 한다. insert into user (id, name, ...) values (...); select * from user where ...; update user set ... where ...; delete from user where ...; 이러한 SQL들을 반복적으로 수백 개의 테이블의 수 배의 SQL을 만들고 유지보수해야 한다. 이런 반복 작업의 문제 ..

Books/스프링 부트와 AWS로 혼자 구현하는 웹 서비스

[스프링 부트와 AWS로 혼자 구현하는 웹 서비스] 2장. 스프링 부트에서 테스트 코드를 작성하자

'스프링 부트와 AWS로 혼자 구현하는 웹 서비스'를 정리한 글입니다. 테스트 코드 Red: 항상 실패하는 테스트를 먼저 작성하고 Green: 테스트가 통과하는 프로덕션 코드를 작성하고 Refactor: 테스트가 통과하면 프로덕션 코드를 리팩토링합니다. TDD: 테스트가 주도하는 개발로 먼저 테스트 코드를 작성하는 것부터 시작한다. 단위 테스트: TDD의 첫 번째 단계인 기능 단위의 테스트 코드를 작성하는 것. 이번 장에서 단위 테스트 코드를 배운다. 단위 테스트 코드를 작성함으로써 얻는 이점 개발단계 초기에 문제를 발견하게 도와준다. 개발자가 코드를 리팩토링하거나 라이브러리 업그레이드 등에서 기존 기능이 올바르게 작동하는지 확인할 수 있다. 기능에 대한 불확실성을 감소시킬 수 있다. 시스템에 대한 실제..

Books/스프링 부트와 AWS로 혼자 구현하는 웹 서비스

[스프링 부트와 AWS로 혼자 구현하는 웹 서비스] 1장. 인텔리제이로 스프링 부트 시작하기

'스프링 부트와 AWS로 혼자 구현하는 웹 서비스'를 읽고 정리한 글입니다. 인텔리제이에서 프로젝트 생성하는 방법 프로젝트 생성 그레이들 프로젝트를 스프링 부트 프로젝트로 변경하기 스프링 이니셜라이저를 써도 되지만 처음이니 build.gradle에 직접 코드를 추가하도록 한다. 책 내용과 달리 gradle6을 사용하고 있으므로 조금 수정하여 추가한다. plugins { id 'org.springframework.boot' version '2.4.1' // RELEASE 삭제 id 'io.spring.dependency-management' version '1.0.10.RELEASE' id 'java' } group 'org.blabla~' // group 이름이 자동으로 입력되어있다. version '1..

또 고민 중
고민 중