1. 문제 spring boot2 에서 jedis를 사용할 떄 아래와 같이 에러가 발생할 수 있다. @SpringBootApplication public class RedisApplication { @Bean JedisConnectionFactory jedisConnectionFactory() { RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration("hostname", 6379); return new JedisConnectionFactory(redisStandaloneConfiguration); } @Bean RedisTemplate redisTemplate(){ RedisTemplate r..
로컬환경에서 RestController로 구현한 어플리케이션에 "Insomnia"나 "Postman"으로 POST API를 호출했을때 401 error가 발생하는 경우가 있다. 이는 spring security가 외부의 접근을 막기 때문이다. 간단히 테스트하는 용도로 만든 RestController에서는 build.gradle에서 spring-secuirty dependency를 주석처리하면 해당 오류를 해결할 수 있다. 😎 짜잔 추천서적 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 COUPANG www.coupang.com 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
linux 서버에서 npm install express를 입력하면 에러가 발생할 수 있다. 이 경우 아래의 명령어를 입력후 다시 npm install express를 입력하면 해결된다. npm config set registry http://registry.npmjs.org/ 추천서적 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 COUPANG www.coupang.com 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
아래와 같이 Entity에 @Lombok을 사용했는데, Constructor를 제대로 잡지 못해 에러가 날 수 있다. @Getter @Setter @AllArgsConstructor @NoArgsConstructor public class Employee { private String employeeId; private String name; private LocalDate birthDate; } IntelliJ의 경우 Settings > Build > Annotation Processors의 Enable annotation process을 선택하고 저장해서 해결 할 수 있다. 전체 에러 Stack은 아래와 같다. Error:(27, 24) java: constructor Employee in class..
아래와 같이 Jackson을 사용해서 objectMapper에서 에러가 발생하면 import com.course.rabbitmqproducer.entity.Employee; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.stereotype.Service; @Service public class EmployeeJsonProducer { private ObjectMapper objectMapper = new ObjectMapper(); public void sendMessage(Employee emp){ try..
이번 글에서는 아마존 RDS 생성 시 꼭 해야 할 설정들에 대해 알아보도록 하겠습니다. 1. 파라미터 그룹 rds의 세부 설정은 파라미터 그룹을 통해 수행합니다. 아래 그림을 참고해 파라미터 그룹을 생성합니다. 생성시 Parameter group family은 반드시 생성한 RDS의 DB version을 선택합니다. 이후 생성된 parameter group을 클릭해, 상세 페이지로 이동합니다. 다음으로 Edit Parameter 버튼을 클릭해 편집 모드로 전환합니다. 이제 각 설정값들을 변경해보도록 하겠습니다. 자세한 내용은 아래의 책을 참고하시길 바랍니다. 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 COUPANG www.coupang.com 1) Time Zone time_zone을 검색해 Asi..
이번 글에서는 아마존 리눅스1 EC2 서버 생성 시 꼭 해야 할 설정들에 대해 알아보도록 하겠습니다. 1. Java 8 설치 아마존 리눅스1의 경우 기본 자바 버전이 7이므로 이를 8로 변경해야 합니다. 아래의 명령어를 순서대로 입력합니다. 1) download java 8 sudo yum install -y java-1.8.0-openjdk-devel.x86_64 2) change java version sudo /usr/sbin/alternatives --config java 2 3) remove java 7 sudo yum remove java-1.7.0-openjdk 자세한 내용은 아래의 책을 참고하시길 바랍니다. 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 COUPANG www.coupang..
이번 글에서는 Ubuntu EC2에 GUI를 설치해보도록 하겠습니다. 1. EC2 생성하기 먼저 AWS 콘솔에 접속해 Ubuntu 환경의 EC2 인스턴스를 생성합니다. 저는 16.04 버전의 Ubuntu AMI를 사용했습니다. 기본 설정의 인스턴스를 생성합니다. 2. EC2 인스턴스 접속하기 다음으로 생성한 EC2 인스턴스에 접속합니다. 저는 윈도우 환경이므로 Putty로 접속하겠습니다. 생성한 EC2 인스턴스의 Public IP를 입력하고 Connection Type은 SSH를 선택합니다. SSH > Auth 탭에서 Private Key를 선택 후 Open을 눌러 EC2 인스턴스로 접속합니다. ubuntu를 입력해 로그인합니다. 자세한 내용은 아래의 책을 참고하시길 바랍니다. 스프링 부트와 AWS로 혼..
이번 글에서는 ELB에 SSL 인증서를 적용해보도록 하겠습니다. 0. SSL 인증서란? SSL 인증서는 클라이언트와 서버간의 통신을 제3자가 보증해주는 전자화된 문서입니다. https로 시작하는 사이트에 접속한뒤 주소 좌측의 🔏 모양을 클릭하면, 해당 사이트의 SSL 인증서를 확인할 수 있습니다. 저는 이번 글에서 AWS에서 제공해주는 ACM 인증서를 사용하였습니다. 아래 내용을 보면 발급자가 Amazon인 것을 확인할 수 있습니다. 클라이언트가 서버에 접속한 직후에 서버는 클라이언트에게 이 인증서 정보를 전달합니다. 클라이언트는 이 인증서 정보가 신뢰할 수 있는 것인지를 검증 한 후에 다음 절차를 수행하게 됩니다. SSL과 SSL 디지털 인증서를 이용했을 때의 이점은 아래와 같습니다. • 통신 내용이 ..
이번 글에서는 AWS에서 CloudFront의 CNAME 설정 방법을 알아보겠습니다. 0. CNAME이란? CloudFront에서 배포에 배정하는 도메인 이름 대신에 고유의 사용할 수 있는 도메인 이름 (ex: www.daily-mission.com) 입니다. 예를 들어 ELB를 캐시한 CloudFront에 접근할 때 AWS에서 제공하는 도메인이 아닌 사용자가 구매한 도메인으로 변경해 접근할 수 있습니다. 1. CloudFront 수정하기 이번 실습에서는 ELB를 캐시한 CloudFront가 있다고 가정하겠습니다. 또한, 사용자가 구매한 도메인이 있다고 가정하겠습니다. 자세한 내용은 아래의 책을 참고하시길 바랍니다. 아마존 웹 서비스를 다루는 기술:실무에서 알아야 할 기술은 따로 있다! COUPANG w..
이번 글에서는 AWS의 기본 기능들을 정리 해보도록 하겠습니다. 전체 구조의 흐름은 아래와 같습니다. 1. Region / AZ(Availability Zone) ✔ Region • AWS의 모든 서비스가 위치하고 있는 물리적인 장소입니다. • 전 세계 주요 지역에 위치하고 있으며 Region 내부에는 가용 영역이 여러 개 있습니다. ✔ AZ(Availability Zone) • 가용영역이라 불리며, 데이터 센터의 단위가 됩니다. • 가용 영역이 위치한 데이터 센터는 같은 지역 혹은 도시라 하더라도 멀리 떨어져 있습니다. AWS에서는 EC2 가상 서버를 하나의 Region 안에서도 여러 가용 영역에 만들어서 사용할 것을 권장합니다. ELB를 사용해 같은 Region의 여러 가용 영역에 걸쳐 있는 EC2에..
이번 글에서는 AWS의 Message Queue 서비스인 SQS를 사용해보도록 하겠습니다. 0. SQS(Simple Queue Service)란? 서버들끼리 사용할 수 있는 메세지 큐를 제공하는 서비스입니다. 그렇다면 메세지 큐란 무엇일까요?😅 간단히 요약하자면 프로세스 또는 프로그램 인스턴스가 데이터를 서로 교환할때 사용하는 방법이라고 할 수 있습니다. 이러한 데이터를 교환할 떄는 AMQP(Advanced Message Queuing Protocol) 프로토콜을 사용하게됩니다. 이러한 메세지 큐는 메시지를 손실 없이 정확하게 처리하고, 고가용성을 제공하기 때문에 대규모 서비스를 구축할 때 필수적입니다. 사용자에게 결과를 빨리 보여줘야 하는 작업과 시간이 오래 걸리는 작업을 분리할때, 중요한 작업과 중요..
이번 글에서는 AWS의 검색 서비스인 CloudSearch를 사용해보도록 하겠습니다. 0. CloudSearch란? 대용량 데이터를 빠르게 검색할 수 있도록 검색 엔진을 제공해주는 서비스입니다. Apache Lucene은 오픈 소스 검색 라이브러리이며, Apache Solr는 Apache Lucene을 사용한 엔터프라이즈용 검색 서버입니다. CloudSearch는 Apache Solr를 텍스트 검색 엔진으로 사용합니다. • 검색 도메인 : 검색 인스턴스들의 집합이며 리전(Region)별로 생성됩니다. • 검색 인스턴스 : 데이터를 저장하고, 인덱싱하고, 검색 결과를 도출합니다. 가용영역(AZ)별로 생성됩니다. CloudSearch 검색 도메인에 데이터를 올리면 알아서 검색 인스턴스에 저장하고, 데이터 용..
이번 글에서는 AWS의 서버 구성 자동화 기능을 사용해보겠습니다. 0. 서버 구성 자동화란? AWS에서 제공하는 템플릿을 사용해 AWS 리소스 생성과 배포를 자동화하는 기능입니다. 자동화에 대한 자세한 내용은 https://velog.io/@minholee_93/series/Jenkins 에서 다뤄보겠습니다. AWS에는 서버 구성을 자동화해주는 여러 기능들이있습니다. 대표적으로 CloudFormation, Elastic Beanstalk, OpsWorks 등이 있으며 이번 글에서는 ElasticBeanstalk을 다뤄보겠습니다. 예를 한번 들어보겠습니다. 우리는 앞서 EC2, EBS, S3, RDS 등의 인스턴스들을 다뤘습니다. 기본적으로 서버를 구성하기 위해서는 이러한 인스턴스들을 조합해 하나의 서비스..
이번 글에서는 AWS의 VPC 개념에 대해 이해하고, 서비스에 적용해보도록 하겠습니다. 0. VPC(Virtual Private Cloud)란? AWS 계정 전용 가상 네트워크입니다. VPC는 AWS 클라우드에서 다른 가상 네트워크와 '논리적'으로 분리되어 있습니다. EC2 인스턴스와 같은 AWS 리소스를 VPC에서 실행할 수 있습니다. 사용자는 용도에 따라 VPC를 생성할 수도 있고, VPC 안에는 여러 서브넷을 추가할 수 있습니다. 서브넷을 여러 개로 나누면 네트워크를 격리할 수 있으며, 각 서브넷 간에 접근제어(ACL)를 설정할 수 있습니다. 예를 들어 인터넷에 접근해야 하는 웹 서버는 공개 서브넷(Public Subnet)에 만들고, 외부 접근이 필요 없는 데이터베이스 서버는 사설 서브넷(Priv..
이번 글에서는 EC2에 Auto Scaling 기능을 적용해보겠습니다. 0. Auto Scaling이란? EC2 인스턴스의 트래픽에 따라서 자동으로 추가적인 EC2 인스턴스를 생성 및 삭제해 최적의 서비스를 제공하는 기능입니다. 보통 CloudWatch와 ELB(Elastic Load Balancing)와 함께 사용합니다. CloudWatch로는 EC2 인스턴스의 CPU 사용률, 네트워크 사용량 등을 체크합니다. 생성된 EC2 인스턴스들은 ELB(Elastic Load Balancing)와 연결되어 트래픽을 분산시킵니다. 1. AMI 생성하기 이번 실습을 위해 ELB와 연결된 EC2 인스턴스의 AMI가 필요합니다. 먼저 ELB에 연결할 2개의 EC2 인스턴스를 아래와 같이 생성했습니다. 자세한 내용은 아..
이번 글에서는 Route 53의 DNS 서비스를 사용해보도록 하겠습니다. 0. DNS(Domain Name System)란? 도메인 이름을 네트워크 주소로 바꾸거나 그 반대의 변환을 수행할 수 있도록 하기 위한 시스템입니다. 즉, DNS 서비스는 도메인에 연결된 IP 주소를 알려줍니다. 간단히 예를 한번 들어보겠습니다. 우리가 잘 알고있는 'naver.com'이라는 도메인이 있습니다. 사용자가 웹브라우저에 도메인 'naver.com'을 입력하면 아래와 같은 과정을 거치게 됩니다. 1. 도메인(naver.com)이 가지고 있는 네임서버에 접속 2. 네임서버에 접속한 도메인(naver.com)과 연결된 IP 정보를 확인 3. 네임서버에서 도메인(naver.com)과 연결된 IP를 전달 4. 네임서버에서 전달..
이번 글에서는 AWS에서 ELB를 사용해 EC2의 트래픽을 분산해보겠습니다. 0. ELB(Elastic Load Balancing)이란? 부하 분산과 고가용성을 제공하는 서비스입니다. ELB는 한 곳에 집중되는 HTTP, TCP, SSL 트래픽을 여러 EC2 인스턴스로 분산합니다. 그리고 서버가 정상적으로 가동 중인지를 확인(Health Check)해 일부 EC2 인스턴스가 중단되면 트래픽을 정상 EC2 인스턴스로만 보냅니다. ELB는 리전별로 생성해야 하고, 여러 가용 영역(AZ)에서 실행되는 EC2 인스턴스로 부하를 분산시킬 수 있습니다. 1. ELB 생성하기 이번 실습을 위해선, 동일 리전 다른 가용 영역에 생성된 2개의 EC2 인스턴스가 필요합니다. 자세한 내용은 아래의 책을 참고하시길 바랍니다...
AWS에서는 루트사용자 별로 Free Tier에서 사용할 수 있는 서비스를 제공해줍니다.. 하지만, 저의 실수로 인해 대량의 요금이 과금되었습니다.🤣 0. 발단 사건의 발단은.. 최근 약 4일간 다녀온 해외여행입니다. 1. 전개 여행 중 AWS로 부터 메일이 왔습니다.. 당시에는 빨리 귀국해서 해당 서비스를 끄면 되겠구나 대수롭지 않게 생각했습니다. 무엇보다, 노트북을 들고가지 않았기 때문에 해외에서는 해당 루트 계정으로 접속할 수 있는 방법이 없었습니다. AWS 관련 내용은 아래의 책을 참고하시길 바랍니다. 아마존 웹 서비스를 다루는 기술:실무에서 알아야 할 기술은 따로 있다! COUPANG www.coupang.com 2. 위기 어제 저녁에 귀국한뒤 피곤함에 지쳐 잠이들었습니다..🤢 오늘아침.. AW..
이번 글에서는 IAM 기능 중 IAM 역할을 사용해보도록 하겠습니다. 0. IAM 이란? Identitiy and Access Management(식별 및 접근 관리)의 약어로 사용자와 그룹을 생성하고 AWS의 각 리소스에 대해 접근제어와 권한관리를 제공합니다. IAM은 AWS 계정 안에 IAM 그룹과 사용자를 생성해 접근제어 및 권한관리를 세분화할 수 있습니다. 어떤 IAM 사용자는 EC2만 관리할 수 있고, 어떤 IAM 사용자는 S3의 내용을 읽을 수만 있도록 구성할 수 있습니다. 따라서 전체 권한이 아닌 필요한 권한만 주기 때문에 보안성이 높아집니다. 1. IAM 역할 생성하기 IAM 역할(Role)은 그룹과 사용자에게 권한을 설정하는 것과는 달리 EC2 인스턴스, 다른 AWS 계정, Faceboo..