6회. Ch10 - 24시간 365일 중단 없는 서비스를 만들자
·
BE/6기 코테이토 - Spring Study
9장까지 만든 서비스의 단점은 배포하는 과정에서 새로운 Jar가 실행되기전까진 기존 Jar를 종료시켜야한다는 점때문에 서비스가 중단되는 문제가 발생한다. 그러나, 24시간 서비스를 하는 네이버,카카오톡등은 배포과정에서 서비스가 정지되지 않는데 이번 장에선 그 방법에 대해 알아볼 계획이다. 10.1 무중단 배포 소개 과거에는 배포를 하기 위해서, 사용자가 적은 시간대에 개발자들이 출근을 해서 배포를 진행했다고 한다. 서비스를 일시적으로 정지해야한다는 단점, 롤백이 어렵다는 단점들이 존재했다. 따라서, 무중단 배포를 위한 방법을 연구했고 여러가지 방법이 존재한다. - AWS에서 블루 그린(Blue-Green)을 통한 무중단 배포 - 도커를 이용한 웹서비스 무중단 배포 - L4 스위치를 이용한 무중단 배포 (..
5회. Ch9 - 코드가 푸시되면 자동으로 배포해보자- Travis CI 배포 자동화
·
BE/6기 코테이토 - Spring Study
지난 챕터 6-8까지는 5장까지 만들었던 게시판 프로젝트를 EC2에 배포하고 배포과정을 진행하는 쉘스크립트를 작성하는 작업, 그리고 깃헙에 공개되면 안되는 프로젝트 설정 파일들을 EC2 서버에 등록하는 과정을 진행했다. 이제, 9장에서는 코드가 작성되고 깃허브에 푸시되면 자동으로 배포가 되는 과정을 진행하기로 한다. 24시간, 365일 운영되는 서비스에서 여러 개발자의 코드가 실시간으로 병합되고, 테스트 수행, master 브랜치에 푸시가 되면 자동으로 배포가 되는 환경을 구축해야 실수를 방지할 수 있다고 저자는 이야기한다. 9.1 CI & CD 소개 8장에서 쉘 스크립트를 개발자가 실행하며 EC2에 배포를 진행했다. -> 불편하니 CI,CD 환경을 구축해 이 과정을 개선하자 CI란? Continuous..
4회(2). Ch8 - EC2서버에 프로젝트를 배포해보자
·
BE/6기 코테이토 - Spring Study
8.4 부터는 여기에 따로정리하겠다. 8.4 스프링부트 프로젝트로 RDS 접근하기 RDS는 우린 현재 MariaDB를 사용중이다. MariaDB에서 스프링부트 프로젝트를 실행하려면 다음과 같은 작업을 선행해야한다. 테이블 생성 : H2 DB에서는 자동으로 생성해주던 테이블을 직접 쿼리를 사용해 생성해야한다. 프로젝트 설정 : 자바 프로젝트가 MariaDB에 접근하려면 DB드라이버를 추가해야한다. EC2 (리눅스 서버) 설정 : 데이터 베이스 접속 정보는 보호되어야할 정보이다. 공개시엔 외부에서 데이터를 모두 가져갈 수 있는 데이터 유출이 일어날 수 있다. 따라서, 프로젝트 안에 접속 정보를 가지고 있다면 깃헙에서 해킹 될 수 있다. 따라서, EC2 서버 내부에서 접속 정보를 관리해야한다. RDS 테이블 ..
4.5회. Ch8. 다시도전 (그래도 실패를 곁들인)
·
BE/6기 코테이토 - Spring Study
우선, 기존 app/step1과 step11 디렉토리에 있는 파일을 다 지워버려야한다. 따라서 디렉토리 삭제 명령을 실행해야한다. 삭제 권한이 없는 로컬디렉토리까지 지우는 명령어 rm -rf {디렉토리명} git 설치와 자바를 설치하는 과정은 건너뛰고 clone을 진행하자. git clone https://github.com/Youthhing/springboot1.git 이후 cd springboot1로 이동, 권한 추가를 하고 ./gradlew test를 진행해주자. 8.2 배포 스크립트 만들기 배포 스크립트를 만드는 이유는 배포 과정에서 명령어를 하나하나 작성하기 힘드니까 미리 과정에 대한 내용을 쉘스크립트로 만드는 것. 자, 우선 다음과 같이 배포스크립트 deploy.sh를 만들었다. #!/bin/..
4회(1). Ch8 - EC2서버에 프로젝트를 배포해보자
·
BE/6기 코테이토 - Spring Study
5장까지 만든 프로젝트를 이제 배포해보는 과정이다. putty에 로그인 한 후 git을 EC2에 설치한다. sudo yum install git 이후 cd 명령어로 ~/app/step1 디렉토리를 생성하고 해당 디렉토리에 git 프로젝트를 클론할 것이다. git clone https://github.com/Youthhing/springboot1.git 이후 클론 진행을 확인하고 cd 명령어로 프로젝트를 들어간다. ./gradlew test 명령어로 코드들이 잘 수행되는지 확인하자. 두 가지의 오류가 발생할 수 있다. 1. 테스트가 실패했다. 이 경우 우선, 코드를 수정해야한다. 수정한 코드를 깃허브에 다시 푸쉬했다면 다음 명령어를 통해 프로젝트를 다시 가져오자. git pull 2. 실행권한이 없다 -b..
4회. Ch7 - AWS에 데이터베이스 환경을 만들어보자. - AWS RDS
·
BE/6기 코테이토 - Spring Study
백엔드를 다룰때 데이터베이스를 관리하는 것은 코드를 작성하는 것만큼 중요한 일이다. ㄱㅐ발자의 능력중 하나는 데이터베이스를 다룰 줄 알아야한다는 것이다. 이 챕터에서는 DB를 구축하고, EC2와 연동을 할 계획이다. 데이터베이스를 설치해 다루려면 모니터링, 알람, 백업, HA구성등을 모두 직접해야하지만, 이를 모두 지원하는 AWS의 RDS를 이용할 계획이다. RDS는 클라우드 기반 관계형 데이터 베이스로, 하드웨어 프로비저닝, 데이터베이스 설정, 패치, 백업을 자동화하고 추가용량을 지원해 비용을 지불하면 문제 없이 서비스를 지속할 수 있게 해준다. 7.1 RDS 인스턴스 생성하기 대시보드에 RDS를 검색하고 데이터베이스를 생성하자. 여기선 MariaDB를 추천하는데 나는 사실 PostgreSQL 경험이 ..
4회. ch6 AWS 서버 환경을 만들어보자 - AWS EC2
·
BE/6기 코테이토 - Spring Study
우리가 어떤 서비스를 만들고 24시간 이용하게 하려면 24시간 작동하는 서버가 필요하다. 이에는 3가지 옵션이 존재하는데 다음과 같다. 1. 집에 PC를 24시간 구동시키기 2. 호스팅 서비스(Cafe 24, 코리아호스팅)을 이용한다. 3. 클라우드 서비스(AWS, AZURE,GCP)를 이용한다. 1,2번 옵션이 일반적인 비용면에서 유리하나, 특정 시간에 트래픽이 몰렸을경우 유동적으로 사양을 늘릴 수 있는, 3번이 유리한 옵션이다. 클라우드 서비스란? - 인터넷(클라우드)을 통해, 서버, 스토리지, 데이터베이스, 네트워크 등의 컴퓨팅 서비스를 제공하는 것을 말한다. 단순 물리 장비를 제공하는 것이 아닌 그 안의 로그 관리, 모니터링, 하드웨어 교체, 네트워크 관리등 개발자가 직접할 일을 대신 지원해줌. ..
3회 - Ch.5(2) 스프링 시큐리티와 OAuth 2.0으로 로그인 기능 구현하기
·
BE/6기 코테이토 - Spring Study
5.4 어노테이션 기반으로 개선하기 개선이 필요한 나쁜 코드란? 같은 코드가 반복되는 부분. 수정시 모두 수정을 해야하기 때문! -> 수정이 반영되지 않을 수 있음. 앞에서 만든 로그인 관련 코드에서 개선할 부분이 있을까? IndexController에서 세션값을 가져오는 부분이 그러하다. SessionUser user = (SessionUser) httpSession.getAttribute("user"); 해당 기능은 index 메소드가 아닌 다른 메소드에서도 충분히 활용될 수 있으므로 반복되지 않게 따로 분리해주는 것이 좋다. @LoginUser 어노테이션 추가. @Target(ElementType.PARAMETER) @Retention(RetentionPolicy.RUNTIME) public @in..
3회 - Ch.5 스프링 시큐리티와 OAuth 2.0으로 로그인 기능 구현하기
·
BE/6기 코테이토 - Spring Study
보호되어 있는 글입니다.
3회 - Ch4 머스테치로 화면 구성하기
·
BE/6기 코테이토 - Spring Study
보호되어 있는 글입니다.
유쓰응
'BE/6기 코테이토 - Spring Study' 카테고리의 글 목록