개발 이야기
[AWS] EC2 Abuse Report 대응 및 해결 방법 - AWS EC2 Instance Connect
[AWS] EC2 Abuse Report 대응 및 해결 방법 - AWS EC2 Instance Connect
2024.01.25얼마 전 EC2 사용 중인 메일 계정으로 Abuse Report 메일을 하나 받았다. AWS Abuse Report 이메일의 내용을 요약하자면 AWS에서 사용 중인 EC2 인스턴스에 권한 없이 접근하려고 여러 시도가 있었고 해당 행동을 중지하도록 조치하고 메일을 회신해 달라는 내용이었다. EC2 Abuse Report 대응 및 대처 방법을 알아보고 어떻게 해결했는지 공유하고자 한다. 결론만 이야기하면 결국은 EC2 인스턴스를 삭제하고 다시 생성했다. 자세하게 내용을 뜯어보자. 1. Abuse Report 내용 Hello, We've received a report(s) that your AWS resource(s) AWS ID: ************ Region: ********* EC2 Instanc..
[AWS] EC2 NGINX에 무료 SSL/TLS 적용하고 HTTPS로 리다이렉트(Redirect) 하기 - Let's Encrypt (Certbot)
[AWS] EC2 NGINX에 무료 SSL/TLS 적용하고 HTTPS로 리다이렉트(Redirect) 하기 - Let's Encrypt (Certbot)
2024.01.16이번엔 Nginx에 SSL/TLS 인증서를 등록하고 http로 접속 시 https로 리다이렉트 하려고 한다. 이전 글에서 이어서 작성했다. [AWS] EC2 NGINX 설치하고 Config설정 및 배포하기 EC2에서 톰캣(Tomcat)을 사용하여 서버를 배포하고 있는데 Nginx로 무중단 배포를 한 번 해보고 싶어서 변경하려고 한다. 본 글에서는 우선 Nginx 설치부터 설정 및 배포까지 해보도록 하겠다. 1. NGINX diary-developer.tistory.com 1. Certbot 및 플러그인 설치 1-1. EPEL(Extra Packages for Enterprise Linux) 저장소 활성화 EPEL은 CentOS나 다른 파생 배포판을 위한 패키지 저장소로 많은 소프트웨어 패키지를 제공하고 ..
[AWS] EC2 NGINX 설치하고 Config설정 및 배포하기
[AWS] EC2 NGINX 설치하고 Config설정 및 배포하기
2024.01.16EC2에서 톰캣(Tomcat)을 사용하여 서버를 배포하고 있는데 Nginx로 무중단 배포를 한 번 해보고 싶어서 변경하려고 한다. 본 글에서는 우선 Nginx 설치부터 설정 및 배포까지 해보도록 하겠다. 1. NGINX 설치하기 1-1. Nginx 설치 yum 명령어를 사용해서 Nginx를 설치하자. sudo yum install -y nginx 설치가 완료됐다. (더보기 시 설치 로그 확인) 더보기 Loaded plugins: extras_suggestions, langpacks, priorities, update-motd amzn2-core | 3.6 kB 00:00:00 amzn2extra-docker | 2.9 kB 00:00:00 amzn2extra-kernel-5.10 | 3.0 kB 00:0..
[AWS] EC2에서 Node.js, npm, yarn 패키지 설치하는 방법 (nvm)
[AWS] EC2에서 Node.js, npm, yarn 패키지 설치하는 방법 (nvm)
2023.12.06AWS EC2 사용 중인데 백엔드 개발자지만 프론트엔드도 같이 하느라 리액트 프로젝트를 배포할 일이 생겨서 서버에 여러 설정들을 했다. 리액트를 배포하기 위해 Node.js를 설치하고 npm을 사용하려고 한다. 1. NVM 설치하기 1-1. curl 설치 curl이 설치되어 있지 않다면 아래 명령어로 설치한다. yum install curl 1-2. nvm 설치 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash % Total % Received % Xferd Average..
[AWS] EC2 무료 SSL/TLS(HTTPS)적용 방법 (Apache Tomcat, Spring Boot 내장 Tomcat 적용) - Let's Encrypt (Certbot)
[AWS] EC2 무료 SSL/TLS(HTTPS)적용 방법 (Apache Tomcat, Spring Boot 내장 Tomcat 적용) - Let's Encrypt (Certbot)
2023.11.02따로 운영 중인 서비스의 경우 HTTP 통신으로 사용 중이었는데, 구글이나 애플 서비스를 이용해야 되다 보니 HTTPS 통신이 불가피하게 되었다. SSL 인증서 적용하는 방법 중 유료가 아닌 무료로 적용할 수 있는 방법에 대해 알게 되어 Let's Encrypt를 사용하여 AWS EC2에서 SSL 인증서 적용하는 방법을 공유하려고 한다. 더보기 Let's Encrypt는 SSL/TLS 인증서를 제공하는 비영리 인증 기관으로 유료로 SSL 인증서를 구매하는 것이 HTTPS 보급에 방해가 된다고 생각해서 무료로 HTTPS를 보급하려고 만들었다고 한다. 1. Certbot 설치 1-1. EPEL(Extra Packages for Enterprise Linux) 저장소 활성화 EPEL은 CentOS나 다른 파생..
[Spring Boot] CORS Filter 설정하기 (CORS 오류 해결방법) - Java
[Spring Boot] CORS Filter 설정하기 (CORS 오류 해결방법) - Java
2023.07.11웹 개발을 하다 보면 CORS 오류는 많이 볼 수밖에 없다. 최근 Spring Boot로 개발을 진행하면서 발생했던 CORS 오류를 어떻게 해결했는지에 대한 과정이다. CORS (Cross Origin Resource Sharing) Policy 직역하자면 출처가 서로 다른 자원들을 공유한다는 뜻으로 브라우저가 리소스 로드를 허용해야 하는 자체 출처 이외의 모든 출처 (도메인, 스키마 또는 포트)를 서버가 표시할 수 있도록 하는 정책. Cross-Origin Resource Sharing (CORS) - HTTP | MDN Cross-Origin Resource Sharing (CORS) is an HTTP-header based mechanism that allows a server to indicat..
[Javascript] 이미지 불러오기 오류 및 무한루프 해결 - onError
[Javascript] 이미지 불러오기 오류 및 무한루프 해결 - onError
2023.04.10HTML 이미지 태그를 사용하여 이미지를 로드할 때 이미지 로드 오류 발생 시 onError 속성을 사용하여 대체이미지를 설정할 수 있다. 1. onError 속성 사용 아래 작성한 이미지 태그를 보면 dog.jpg 이미지를 로드하고, 로드에 실패했을 때 dog_2.jpg 이미지를 로드하도록 onError 속성을 추가했다. 그런데 만약 dog_2.jpg 이미지도 로드가 되지 않는다면 어떻게 될까? 그런 상황이 발생한다면 onError에서의 대체 이미지도 로드 오류로 판단해서 다시 onError를 호출하게 되면서 계속해서 onError를 호출하는 무한루프에 빠지게 된다. 2. onError 초기화 - 무한루프 방지 이 상황을 해결하기 위해 onError에서 다음과 같이 onError값을 비워주도록 한다. ..
[Javascript] 자바스크립트 배열 내장함수 종류와 사용방법
[Javascript] 자바스크립트 배열 내장함수 종류와 사용방법
2023.02.09자바스크립트(Javascript)로 개발할 때 정말 유용하게 사용했던 배열 내장 함수들에 대해 알아보자. 1. at 배열의 주어진 인덱스에 대한 값을 반환하는 함수 at(index) index: 배열에서 반환할 요소의 인덱스 (음수 값일 경우 배열의 마지막요소부터 계산) 예제 const cafe = ['아메리카노', '라떼', '스무디', '프라푸치노']; cafe.at(0); //아메리카노 cafe.at(1); //라떼 cafe.at(2); //스무디 cafe.at(3); //프라푸치노 cafe.at(-1); //프라푸치노 cafe.at(-2); //스무디 cafe.at(-3); //라떼 cafe.at(-4); //아메리카노 2. concat 배열이나 값을 기존 배열에 합쳐서 새로운 배열을 반환하는 함..
[Docker] PostgreSQL 도커로 실행하기
[Docker] PostgreSQL 도커로 실행하기
2023.01.09Docker를 사용해서 최신버전의 PostgreSQL을 실행하여 데이터베이스 및 계정을 생성하고 데이터베이스 접근 권한과 계정에게 권한 설정하는 방법 등 아주 기본적인 설정에 대해 알아보려고 한다. 1. PostgreSQL 버전 선택 가장 먼저 해야 할 일은 사용할 PostgreSQL의 버전을 선택해야 한다. 현재 15 버전까지 나와 있는 것을 확인할 수 있었고 Docker Hub에서 지원하는 PostgreSQL의 버전을 확인할 수 있다. postgres - Official Image | Docker Hub Note: the description for this image is longer than the Hub length limit of 25000, so has been trimmed. The ful..
[MSA] 모니터링 (Monitoring, Logging, Tracing)
[MSA] 모니터링 (Monitoring, Logging, Tracing)
2022.12.12MSA(Microservice Acchitecture)에서는 서비스가 분산되어 있는데 모니터링을 어떻게 해야 될까? 클라우드 환경에서는 디스크에 기록된 로그들은 사라질 수 있고 수 많은 서비스의 로그를 각각 관리하기는 굉장히 힘들고 시간도 오래 걸린다. 그렇기 때문에 장비의 디스크에 기록하는 것에 의존해서는 안되고 모든 로그들을 한 눈에 볼 수 있도록 구성하여 문제가 발생했을 때 빠른 대처가 가능하다. MSA에서의 모니터링, 로깅, 트레이싱에 대해서 알아보자. 모니터링 (Monitoring) 인프라 및 응용프로그램의 성능이나 효율성을 확인하는 작업으로 각 대상에게서 수집한 Metric정보를 통해서 대상 리소스의 사용률, 트래픽 등을 수치로 표현하는 기능을 수행한다. 자체적으로 시각화하여 수치와 그래프로 ..
[MSA] Service Discovery 구축하기 - Spring Boot + Netflix OSS Eureka Server
[MSA] Service Discovery 구축하기 - Spring Boot + Netflix OSS Eureka Server
2022.12.02이전 글에서 이야기했듯이 MSA에서는 기본적으로 여러 서비스를 등록하고 등록한 서비스의 검색을 수행하는 서비스 디스커버리 서버(Service Discovery Server)가 필요하다. 디스커버리 서버 Client-Side 방식 중에서 가장 유명하고 구현이 쉬운 Netflix OSS Eureka 서버를 구축해보려 한다. 1. Service Discovery Server 프로젝트 생성 1-1. Service Discovery 프로젝트 생성 ServiceDiscovery 프로젝트를 생성하고 dependency 선택창에서 eureka를 검색해서 Eureka Server를 추가한다. 1-2. application.yml 설정 생성된 프로젝트 src/main/resources 폴더 하위에 application.p..
[MSA] API Gateway 구축하기 - Spring Boot + Spring Cloud Gateway
[MSA] API Gateway 구축하기 - Spring Boot + Spring Cloud Gateway
2022.12.02API Gateway를 구현하기 전에 Service Discovery Server가 필요한데 Netflix OSS Eureka를 사용한 구현하는 방법을 소개한 글을 읽고오면 된다. [MSA] Spring Boot로 Service Discovery 구축하기 - Netflix OSS Eureka Server 이전 글에서 이야기했듯이 MSA에서는 기본적으로 여러 서비스를 등록하고 등록한 서비스의 검색을 수행하는 서비스 디스커버리 서버(Service Discovery Server)가 필요하다. 디스커버리 서버 Client-Side diary-developer.tistory.com 바로 시작해보자! 1. API Gateway, Service 프로젝트 생성 1-1. Sping Cloud Gateway 프로젝트 생성..