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

AWS에서는 관리형 서비스인 RDS(Relational Database System)을 제공한다. 클라우드 기반 관계형 데이터베이스로 하드웨어 프로비저닝, 데이터베이스 설정, 패치 및 백업과 같은 잦은 운영 작업을 자동화하여 개발자가 개발에 집중할 수 있게 지원하는 서비스이다. 또 추가로 조정가능한 용량을 지원하여 예상치 못한 양의 데이터가 쌓여도 비용만 추가로 지불하면 정상적인 실행이 가능하다. 1. RDS 인스턴스 실행 검색창 RDS 입력 > 대시보드에서 [데이터베이스 생성] MariaDB를 고른 이유는 가격과 Amazon Aurora 교체 용이성이 있기 때문이다. 첫번째, RDS의 가격은 라이센스 비용 영향을 받는다. 상용 데이터베이스인 오라클, MSSQL이 오픈소스인 MySQL, MariaDB, ..
1. 클라우드란? 외부에서 본인의 서비스에 접근하려면 24시간 작동하는 서버가 필수이고 이를 구축하기 위해서는 3가지 선택지가 있다. 집에 PC를 24시간 구동 호스팅 서비스(Cafe24, 코리아호스팅 등)을 이용 클라우드 서비스(AWS, AZURE 등)을 이용 일반적으로 비용은 호스팅 서비스나 집 PC를 이용하는 것이 저렴하고, 특정 시간에만 트래픽이 몰린다면 유동적으로 사양을 늘릴수 있는 클라우드가 유리하다. 1) 클라우드란? 클라우드 서비스는 클라우드(인터넷)을 통해 서버, 스토리지, 데이터베이스, 네트워크 등의 컴퓨팅서비스를 제공하는 것이다. 2) 클라우드 형태 (1) Infrastructure as a Service(IaaS) 기존 물리 장비를 미들웨어와 함께 묶어둔 추상화 서비스 가상머신, 스..
1. 어노테이션 기반으로 개선 일반적인 프로그래밍에서 같은코드가 반복적되는 부분은 대표적으로 개선이 필요한 나쁜코드이다. 같은 코드를 계속해서 복사/붙여넣기로 반복하게 된다면 이후 수정할 때에도 모든 부분을 하나씩 찾아가며 수정해야한다. 이럴 경우 유지보수성이 떨어질 수 밖에 없고, 만약 수정이 반영되지 않은 반복 코드가 있다면 문제가 발생할 수 밖에 없다. 앞서 만든 코드중 IndexController에서 세션을 가져오는 부분을 개선할 필요가 있다. SessionUser user = (SessionUser) hyttpSession.getAttribute("user"); index 메소드 외에 다른 컨트롤러와 메소드에서 세션값이 필요하면 그때마다 직접 세션에서 값을 가져와야 한다. 같은 코드가 계속해서 ..
1. 스프링 시큐리티와 스프링 시큐리티 OAuth2.0 클라이언트 스프링 시큐리티는 막강한 인증과 인가 기능을 가진 프레임워크로, 사실상 스프링 기반의 애플리케이션에서는 보안을 위한 표준으로 보면 된다. 스프링의 대부분 프로젝트들처럼 확장성을 고려한 프레임워크이다 보니 다양한 요구사항을 손쉽게 추가하고 변경할 수 있다. 많은 서비스에서 왜 소셜 로그인을 사용하는 걸까? 직접 구현 시에는 로그인 시 보안, 회원가입 시 이메일 혹은 전화번호 인증, 비밀번호 찾기, 비밀번호 변경, 회원정보 변경을 모두 구현해야한다. 이를 모두 구글, 페이스북, 네이버등에 맡기게 되면 서비스 개발에 집중할 수 있기 때문이다. 2. 구글 서비스 등록 구글 서비스에 신규서비스를 생성해야한다. 여기서 발급된 인증정보(clientId..
1. 전체 조회 화면 만들기 1) index.mustache UI 변경 {{>layout/header}} 스프링 부트로 시작하는 웹 서비스 Ver.2 ... 게시글 번호 제목 작성자 최종 수정일 {{#posts}} {{id}} {{title}} {{author}} {{modifiedDate}} {{/posts}} {{>layout/footer}} (1) {{#posts}} - posts라는 List를 순회 - java의 for문과 동일하게 생각 (2) {{id}} 등의 {{변수명}} - List에서 뽑아낸 객체의 필드를 사용 2) PostsRepository 인터페이스에 쿼리 추가 - PostsRepository.java import org.springframework.data.jpa.repository..
1. 템플릿 엔진 - 지정된 템플릿 양식과 데이터가 합쳐져 HTML 문서를 출력하는 소프트웨어 - ex ) JSP, Freemarker(서버템플릿 엔진), React, View(클라이언트 템플릿엔진) 자바스크립트에서 JSP나 Freemarker처럼 자바코드를 사용할 수는 없나요? FE의 자바스크립트가 작동하는 영역과 JSP가 작동하는 영역이 다르다. JSP 및 Freemarker은 주로 서버에서 동적 컨텐츠를 생성하고 이를 클라이언트로 보내는데 사용되는 서버 측 기술이고, 자바스크립트는 브라우저에서 실행되는 클라이언트 측 스크립트 언어이다. 서버에서 Java코드로 문자열을 만든 뒤 이 문자열을 HTML로 변환하여 브라우저로 전달하는데, 이 때 자바스크립트 코드는 단순한 문자열이기에 코드로서 동작하지 않는..
보통 Entity에는 해당 데이터의 수정시간과 생성시간을 포함한다. 언제 만들어지고 수정되었는지는 차후 유지보수에 있어서 매우 중요한 정보이다 매번 DB에 삽입 전, 갱신 전에 날짜 데이터를 등록/수정하는 코드가 여기저기 들어가면 귀찮고 코드가 지저분 해짐. 이를 해결하고자 JPA Auditing을 사용 1. JPA Auditing Auditing을 사용하면 Entity를 누가 언제 생성/수정했는지 자동으로 기록하게 할 수 있다. 2. JPA Auditing 적용하기 1) BaseTimeEntity.java @Getter @MappedSuperclass @EntityListeners(AuditingEntityListener.class) public class BaseTimeEntity { @Created..
API를 만들기 위해서는 3개의 클래스가 필요하다. 1) Request 데이터를 받을 Dto 2) API 요청을 받을 Controller 3) 트랜잭션, 도메인 기능 간의 순서를 보장하는 Service 1. Spring 웹 계층 1) Web Layer - 흔히 사용하는 컨트롤러(Controller)와 JSP/Freemarker 등의 뷰 템플릿 영역 - 이외에도 필터(@Filter), 인터셉터, 컨트롤러(@ControllerAdvice) 등 외부 요청과 응답에 대한 전반적인 영역을 의미 2) Service Layer - @Service에 사용되는 서비스 영역 - 일반적으로 Controller와 Dao의 중간 영역에서 사용된다 - @Transactional이 사용되어야 하는 영역 * DAO : Data Ac..
빨간망토감자도리
'스프링부트와 AWS로 혼자 구현하는 웹서비스' 카테고리의 글 목록