AWS
AWS 사용하여 배포 시 사용하는 명령어
환경 변수 설정 application.yml 등에 사용되는 ${변수명}과 같은 환경 변수들을 EC2에 전역으로 선언하는 방법 1. vi ~/.bash_profile vi 편집기에서 아래의 예시와 같이 입력하여 환경 변수들을 설정할 수 있다. export BASE_IP="서버IP주소" export USERNAME="아이디" export PASSWORD="비밀번호" 2. source ~/.bash_profile 입력한 환경 변수 파일을 실제로 사용 가능하게 등록한다. 빌드 ● chmod +x gradlew gradlew를 실행하기 위한 권한을 부여하는 명령어이다. ● ./gradlew build 새로운 프로젝트를 빌드하는 명령어이다. ● ./gradlew build -x test 위의 명령어와 마찬가지로 새..
AWS 서비스의 종류
AWS를 처음 사용할 때 처음 들어보는 서비스를 사용하다 보니 내가 사용하고 있는 현재 서비스들이 무슨 역할을 하는지도 모른 채로 사용할 때가 있었다. 현재 AWS가 제공하는 다양한 서비스들 중 아직 사용해보지 못한 서비스들도 훗날 사용할 일이 있다고 생각하기에 이번 기회에 AWS의 다양한 서비스들을 정리해보고자 한다. 1. EC2 (Elasitc Compute Cloud) 클라우드 Virtual Machine(가상 머신)으로 가상 컴퓨팅 환경 서비스를 제공한다. 프로젝트의 백엔드 코드를 실행할 수 있을 뿐만 아니라, 컴퓨팅 리소스에 대한 포괄적인 제어권을 제공하기에 Amazon에서 제공하는 서비스의 가장 중심 되는 서비스라고 할 수 있다. 각 사용 사례에 맞게 여러 가지 프로세서, 스토리지, 네트워킹,..
[Spring Boot & AWS] Chpt 8 - EC2 서버에 프로젝트를 배포해 보자
이 글은 이동욱 님의 스프링 부트와 AWS로 혼자 구현하는 웹 서비스를 읽고 정리한 글입니다. 이 책의 1~5장에서는 스프링 부트로 서비스 코드를 개발하였고, 6장과 7장에서는 배포 환경을 구성하였다. 이제 이들을 조합해서 실제로 서비스를 배포해 보도록 하겠다. 1. EC2에 프로젝트 Clone 받기 먼저 깃허브에서 코드를 받아올 수 있도록 EC2에 깃을 설치하겠다. EC2에서 아래의 명령어를 실행하자. sudo yum install git 설치가 완료되었으면 아래 그림처럼 설치 상태를 확인하자. 다음으로 git clone으로 받아온 프로젝트를 저장할 디렉터리를 생성하자. mkdir ~/app && mkdir ~/app/step1 생성한 디렉토리로 이동하자. cd ~/app/step1 본인의 깃허브 웹페..
[Spring Boot & AWS] Chpt 7 - AWS에 데이터베이스 환경을 만들어보자 - AWS RDS
이 글은 이동욱 님의 스프링 부트와 AWS로 혼자 구현하는 웹 서비스를 읽고 정리한 글입니다. 웹 서비스의 백엔드를 다룰 때 애플리케이션 코드를 작성하는 것만큼 중요한 것이 바로 데이터베이스를 다루는 일이다. 큰 기업의 경우 데이터베이스만을 전문적으로 처리하는 DBA 담당자들이 존재하지만, 스타트업이나 개발자의 수가 적은 경우에는 개발자여도 데이터베이스를 다뤄야 한다. 그렇기 때문에 데이터베이스 구축과 쿼리 튜닝에 대해서 기본적인 지식은 갖춰야 할 필요성이 있다. AWS의 RDS를 사용하여 데이터베이스를 구축하고, EC2 서버와 연동을 해보자. RDS는 AWS에서 제공하는 클라우드 기반 관계형 데이터베이스이다. 잦은 운영 작업들을 자동화하여 개발자가 개발에 더 집중할 수 있게 해 주고, 조정 가능한 용량..
[Spring Boot & AWS] Chpt 6 - AWS 서버 환경을 만들어보자 - AWS EC2
이 글은 이동욱 님의 스프링 부트와 AWS로 혼자 구현하는 웹 서비스를 읽고 정리한 글입니다. 이제 AWS(Amazon Web Service)라는 클라우드 서비스를 이용해 본격적으로 서버 배포를 진행해 보겠다. 외부에서 지금까지 만든 서비스에 접근하기 위해서는 24시간 내내 작동하는 서버가 필수적이다. 집의 PC를 24시간 구동, 호스팅 서비스, 클라우드 서비스 이렇게 3가지 선택지가 존재하는데 유동적으로 사양을 늘릴 수 있는 클라우드가 유리하다. 클라우드 서비스는 인터넷(클라우드)을 통해 서버, 스토리지, 데이터베이스, 네트워크, 소프트웨어, 모니터링 등의 컴퓨팅 서버를 제공하는 것을 말한다. 예를 들어 AWS의 EC2는 서버 장비를 대여하는 것에 그치지 않고 로그 관리, 모니터링, 하드웨어 교체, 네..
[Spring Boot & AWS] Chpt 5 - 스프링 시큐리티와 OAuth 2.0으로 로그인 기능 구현하기
이 글은 이동욱 님의 스프링 부트와 AWS로 혼자 구현하는 웹 서비스를 읽고 정리한 글입니다. 스프링 시큐리티는 강력한 인증과 인가 기능을 가진 프레임워크로, 사실상 스프링 기반 애플리케이션 보안을 위한 표준으로 볼 수 있다. 인터셉터나 필터를 기반으로 한 보안 기능을 구현하는 것보단 스프링 시큐리티를 통해 구현하는 것을 적극적으로 권장하고 있다. 이번 장에서는 스프링 시큐리티와 OAuth 2.0을 구현한 구글 로그인을 연동하여 로그인 기능을 만들어 보겠다. 1. 스프링 시큐리티와 스프링 시큐리티 OAuth2 클라이언트 많은 서비스에서 로그인 기능을 새로운 id/password를 만드는 방식보다는 구글, 페이스북, 네이버 로그인 등의 소셜 로그인 기능을 사용한다. 이는 배보다 배꼽이 커지는 경우를 방지하..
[Spring Boot & AWS] Chpt 4 - 머스테치로 화면 구성하기
이 글은 이동욱 님의 스프링 부트와 AWS로 혼자 구현하는 웹 서비스를 읽고 정리한 글입니다. 1. 서버 템플릿 엔진과 머스테치 소개 1) 서버 템플릿 엔진과 클라이언트 템플릿 엔진 먼저 서버 템플릿 엔진이란 지정된 템플릿 양식과 데이터가 합쳐져 HTML 문서를 출력하는 소프트웨어를 말한다. 서버 템플릿 엔진을 이용한 화면 생성은 서버에서 JAVA 코드로 문자열을 만든 뒤 이 문자열을 HTML로 변환하여 브라우저로 전달한다. 반면에 클라이언트 템플릿 엔진은 서버 템플릿과 마찬가지로 지정된 템플릿 양식과 데이터가 합쳐져 HTML 문서를 출력하지만 브라우저 위에서 작동한다. 즉, 브라우저 위에서 작동하기 때문에 서버 템플릿 엔진에서 제어할 수가 없다. 그렇기 때문에 서버에서 Json, Xml 형식의 데이터만..
[Spring Boot & AWS] Chpt 3 - 스프링 부트에서 JPA로 데이터베이스 다뤄보자
이 글은 이동욱 님의 스프링 부트와 AWS로 혼자 구현하는 웹 서비스를 읽고 정리한 글입니다. 웹 서비스를 개발하고 운영하다 보면 항상 다루어야 할 것이 바로 데이터베이스(DB)이다. 과거에는 직접 SQL문을 다루면서 DB를 관리하다 보니 어려움이 많았지만, 요즘은 JPA라는 기술을 사용해서 간단하게 관리할 수 있다. JPA라는 자바 표준 ORM 기술을 사용해서 객체지향 프로그래밍을 사용하여 관계형 데이터베이스를 관리할 수 있다. 편리성 덕분에 1. JPA 소개 현대의 웹 애플리케이션에서 Oracle, MySQL 등의 관계형 데이터베이스(RDB)는 필수적인 요소이다. 그렇다 보니 객체를 관계형 데이터베이스에서 관리하는 것은 무엇보다 중요하다. 그리고 관계형 데이터베이스가 중심이 되감에 따라 코드 또한 애..
[Spring Boot & AWS] Chpt 2 - 스프링 부트에서 테스트 코드를 작성하자
이 글은 이동욱 님의 스프링 부트와 AWS로 혼자 구현하는 웹 서비스를 읽고 정리한 글입니다. 1. 테스트 코드 소개 1) TDD와 단위 테스트(Unit Test) ● TDD 테스트가 주도하는 개발을 뜻한다. 테스트 코드를 먼저 작성하는 것부터 시작한다. 레드 그린 사이클을 거치며 개발한다. 레드 그린 사이클은 다음과 같다. 항상 실패하는 테스트를 먼저 작성 (Red) 테스트가 통과하는 프로덕션 코드 작성 (Green) 테스트를 통과하면 프로덕션 코드를 리팩토링 (Refactor) ● 단위 테스트 TDD의 첫 번째 단계인 기능 단위의 테스트 코드 작성을 뜻한다. TDD처럼 테스트 코드를 꼭 먼저 작성할 필요도 없으며, 리팩토링 또한 포함되지 않는다. 순수하게 테스트 코드를 작성하는 것만을 의미한다. 이번..
[Spring Boot & AWS] Chpt 1 - 인텔리제이로 스프링 부트 시작하기
이 글은 이동욱 님의 스프링 부트와 AWS로 혼자 구현하는 웹 서비스를 읽고 정리한 글입니다. 1. 인텔리제이 소개 자바 웹 개발 IDE의 쌍두마차가 있다. 바로 이클립스 재단의 '이클립스'와 젯브레인즈의 '인텔리제이'다. 이 책의 저자는 이클립스에 비해 인텔리제이가 다음과 같은 장점이 있어 추천하신다고 한다. 강력한 추천 기능 훨씬 더 다양한 리팩토링과 디버깅 기능 이클립스의 Git보다 훨씬 높은 자유도 프로젝트 시작 시 인덱싱을 하여 파일을 비롯한 다양한 자원에 대한 빠른 검색 속도 HTML, CSS, JS, XML에 대한 강력한 기능 지원 자바, 스프링 부트 버전업에 맞춘 빠른 업데이트 실제로 네이버, 카카오, 라인, 쿠팡, 우아한형제들 다양한 IT 서비스 기업에선 현재 인텔리제이를 공식 IDE로 ..