본문 바로가기
728x90
반응형

Web/SpringBoot10

10. 24시간 365일 중단없는 서비스 구축 1. 무중단 배포 서비스를 정지하지 않고 배포하는 방식 AWS에서 블루그린 무중단배포 도커를 이용한 웹서비스 무중단 배포 두 가지 방식과 L4스위치를 이용한 무중단 배포가 있음 L4는 고가의 장비이기 때문에 대형 기업 이외에는 쓸 일이 거의 없고, 엔진엑스를 이용한 무중단 배포를 할 것이며, 웹서버, 리버스, 프록스, 캐싱, 로드밸런싱, 미디어 스트리밍등을 위한 오픈소스 소프트웨어임 아파치가 대세였던 자리를 빼앗은 가장 유명한 웹서버이자 오픈소스 리버스프록시 외부의 요청을 받아 백엔드 서버로 요청을 전달하는 행위 엔진엑스를 이용하는 이유는 가장 저렴하고 쉽기 때문임 EC2 혹은 리눅스 서버에 엔진엑스 1대와 스프링부트 jar 를 2대 사용하는 것 엔진엑스는 80(http), 443(http) 포트를 할당.. 2022. 3. 15.
9. Travis CI 배포 자동화 24시간 무중단 배포 CI & CD CI(Continuous Integration) : 코드 버전 관리하는 VCS 시스템(Git, SVN 등)에 PUSH가 되면 자동으로 테스트와 빌드가 수행되어 안정적인 배포 파일을 만드는 과정 CD(Continuous Deployment) : 빌드 결과를 자동으로 운영 서버에 무중단 배포까지 진행되는 과정 CI 규칙 모든 소스 코드가 살아있고, 누구든 현재의 소스에 접근할 수 있는 단일 지점을 유지할 것 빌드 프로세스를 자동화해서 누구든 소스로부터 시스템을 빌드하는 단일 명령어를 사용할 수 있게 할 것 테스팅을 자동화해서 단일 명령어로 언제든지 시스템에 대한 건전한 테스트 수트를 실행할 수 있게 할 것 누구나 현재 실행 파일을 얻으면 지금까지 가장 완전한 실행 파일을 .. 2022. 3. 14.
8. EC2 서버에 프로젝트 배포 1. EC2에 프로젝트 Clone 받기 깃허브에서 코드를 받아올 수 있게 EC2에 깃을 설치 sudo yum install git 설치 완료 후, 설치 상태 확인 git --version git clone으로 프로젝트를 저장할 디렉토리 생성 mkdir ~/app && mkdir ~/app/step1 생성된 디렉토리 이동 cd ~/app/step1 본인의 깃허브 웹페이지에서 https 주소 복사 복사한 http 주소를 통해 git clone 진행 git clone 복사한 주소 git clone 끝났으면, 클론된 프로젝트로 이동해서 파일들이 복사되었는지 확인함 cd 프로젝트명 ls -ll 코드들이 잘 수행되는지 테스트로 검증 ./gradlew test gradle 버전 최신으로 업그레이드 https://jo.. 2022. 3. 7.
7. AWS 데이터베이스 서버환경 - AWS RDS 1. AWS RDS 애플리케이션 코드를 작성하는 것만큼 중요한 것이 데이터 베이스를 다루는 작업 EC2 서버와 연동 직접 데이터베이스를 설치하지 않음 AWS에서 언급한 작업을 모두 관리형 서비스인 RDS를 제공함 RDS는 AWS에서 지원하는 클라우드 기반 관계형 데이터베이스 하드웨어 프로비저닝, 데이터베이스 설정, 패치 및 백업과 같이 잦은 운영 작업을 자동화하여 개발자가 개발에 집중할 수 있게 지원하는 서비스이며, 추가로 조정 가능한 용량을 지원하여 예상치 못한 양의 데이터가 쌓여도 비용만 추가로 내면 정상적으로 서비스가 가능하다는 장점이 있음 2. RDS 인스턴스 생성 검색창에 rds 검색하여 선택하고, RDS 대시보드에서 데이터 베이스 생성 버튼 클릭 DB 엔진 선택화면에서 MariaDB를 선택 R.. 2022. 3. 5.
6. AWS 서버환경 - AWS EC2 1. AWS 외부에서 본인이 만든 서비스에 접근하려면 24시간 작동하는 서버 필수 집에 PC를 24시간 구동시킴 호스팅 서비스를 이용함 클라우드 서비스를 이용함 일반적으로 비용은 호스팅 서비스나 집 PC가 저렴하지만, 특정 시간에만 트래픽이 몰린다면 유동적으로 사양을 늘릴 수 있는 클라우드가 유리함 클라우드는 인터넷을 통해 서버, 스토리지, 데이터베이스, 네트워크, 소프트웨어, 모니터링 등의 컴퓨팅 서비스를 제공 AWS의 EC2는 서버 장비를 대여하고, 그 안의 로그 관리, 모니터링, 하드웨어 교체, 네트워크 관리 등을 기본적으로 지원 클라우드 형태 1) Infrastructure as a Service(IaaS, 아이아스, 이에스) 기존 물리 장비를 미들웨어와 함께 묶어둔 추상화 서비스 가상머신, 스토.. 2022. 3. 4.
5. Spring security와 OAuth2.0으로 로그인 기능 구현 1. Spring security & Spring security Oauth 2.0 클라이언트 Spring security : Authentication과 Authorization 기능을 가진 프레임워크 스프링 부트 1.5 vs 스프링 부트 2.0 스프링 부트 1.5에서의 OAuth2 연동 방법이 2.0에서 크게 달라졌지만 인터넷 자료를 보면 설정 방법에 크게 차이가 없음을 확인할 수 있음 => 이유는 spring-security-oauth2-autoconfigure 라이브러리 때문임 spring-security-oauth2-autoconfigure 라이브러리를 사용할 경우, 기존 부트 1.5에서 쓰던 설정을 2.0에서도 사용 가능함 스프링 부트 2 방식 자료를 찾고 싶은 경우 spring-securit.. 2022. 3. 3.
4. 머스테치로 화면 구성 1. 서버 템플릿 엔진과 머스테치 1) 템플릿 엔진 : 지정된 템플릿 양식과 데이터가 합쳐져 HTML 문서를 출력하는 소프트웨어 - 서버 템플릿 엔전 : Spring+JSP, Freemarker 등 => 서버 템플릿 엔진을 이용한 화면 생성은 서버에서 Java 코드로 문자열을 만든 뒤 이 문자열을 HTML로 변환하여 브라우저로 전달 - 클라이언트 템플릿 엔진 : 리액트, vue의 view 등 => vue.js나 react.js를 이용한 SPA는 브라우저에서 화면을 생성하며, 서버에서 이미 코드가 벗어난 경우 2) 머스테치 : 수많은 언어를 지원하는 가장 심플한 템플릿 엔진 - 루비, 자바스크립트, 파이썬, PHP, 자바, 펄, Go, ASP 등 현존하는 대부분 언어를 지원하고 있음 - 자바에서 사용될 때.. 2022. 2. 28.
3. SpringBoot에서 JPA로 데이터베이스 활용 1. JPA 소개 - 개발자는 객체지향적으로 프로그래밍하고, JPA가 이를 관계형 데이터베이스에 맞게 SQL을 대신 생성해서 실행함. - 개발자는 항상 객체지향적으로 코드를 표현할 수 있으니 SQL에 종속적인 개발을 하지 않아도 됨 1) Spring Data JPA - JPA : 인터페이스로서 자바 표준명세서이며, 인터페이스인 JPA를 사용하기 위해서는 구현체가 필요함 ex) Hibernate, Eclipse, Link 등이 있음 - Spring Data JPA : 구현체들을 보다 쉽게 사용하고자 추상화 시킨 모듈로서, 관계는 아래와 같음. (JPA 이외에도 필터(@Filter), 인터셉터, 컨트롤러 어드바이스 등 외부 요청과 응답에 대한 전반적인 영역을 말함 - Service Layer => @Serv.. 2022. 2. 27.
2. SpringBoot에서 테스트 코드 작성 1. 테스트 코드 - TDD : 테스트가 주도하는 개발로, 테스트 코드를 먼저 작성하는 것 - 단위 테스트 : TDD의 첫 번째 단계인 기능 단위의 테스트 코드를 작성하는 것 TDD와 달리 테스트 코드를 꼭 먼저 작성하지 않아도 되며, 리팩토링도 포함되지 않음 2. 단위 테스트 - 개발단계 초기에 문제 발견을 도와줌 - 개발자가 나중에 코드를 리팩토링하거나 라이브러리 업그레이드 등에서 기존 기능이 올바르게 작동하는지 확인할 수 있음 - 기능에 대한 불확실성을 감소시킬 수 있음 - 시스템에 대한 실제 문서를 제공하며, 단위 테스트 자체가 문서로 사용할 수 있음 3. 테스트 코드 작성을 도와주는 프레임워크(xUnit) - 개발환경(x)에 따라 Unit 테스트를 도와주는 도구 - JUnit - Java - D.. 2022. 2. 26.
1. IntelliJ 활용한 SpringBoot 시작하기 1. IntelliJ IDEA 프로젝트 생성 - New Project 버튼 클릭하여 새로운 프로젝트 생성 - 프로젝트 유형으로 Gradle을 설정하며, Gradle에서 Java 체크한 후에 next 버튼 클릭 - ArtifactId는 프로젝트 이름 - Location은 설치 경로 - 프로젝트 그룹명과 아티펙트명 등록 화면 - Gradle 프로젝트를 SpringBoot 프로젝트로 변경 buildscript { ext{ //build.gradle에서 사용하는 전역변수를 설정하겠다는 의미 springBootVersion = '2.1.7.RELEASE' //spring-boot-gradle-plugin라는 // 스프링부트그레이들 플러그인의 2.1.7RELEASE를 의존성으로 받겠다. } repositories .. 2022. 2. 25.
728x90
반응형