분류 전체보기
-
[AWS] Spring + Github Actions + CodeDeploy로 CI/CD 하는 법Cloud/AWS 2021. 7. 12. 15:35
Github Action, CodeDeploy로 CI/CD 하는 법 - 1편 CI 도구로 Github Action, CD 도구로는 CodeDeploy를 사용해서 자동화 배포를 진행해보겠습니다.(EC2, S3, CodeDeploy 생성에 대해서는 다루지 않겠습니다.) 이번 글에서는 Github Actions로 CI를 수행한 후에 zip 파일을 S3로 업로드 하는 거 까지 알아보겠습니다. 진행하고자 하는 아키텍쳐는 아래와 같습니다. Github에 push를 하면 Github Action이 자동으로 실행됩니다.(즉, 프로젝트를 빌드 해서 jar 파일을 생성합니다.) 이어서 jar와 Shell Script 파일을 압축해서 S3에 업로드 합니다. EC2에 설치 되어 있는 CodeDeploy Agent가 S3에 업..
-
[MySQL] Distinct 사용할 때 알아두어야 할 것Book/Real MySQL 2021. 7. 10. 00:56
DISTINCT 정리하기 특정 컬럼의 유니크한 값을 조회하려면 SELECT 쿼리에 DISTINCT를 사용합니다. DISTINCT는 MIN(), MAX(), COUNT()와 같은 집합 함수와 함께 사용하는 경우와, 집합 함수가 없이 사용하는 경우 두 가지로 구분해서 알아보겠습니다. SELECT DISTINCT 중복된 값을 없애기 위해서 DISTINCT를 사용합니다. GROUP BY를 사용했을 때와 거의 동일한 방식으로 처리됩니다. 다만 DISTINCT는 정렬이 되지 않는다는 차이 정도가 있습니다. SELECT DISTINCT emp_no FROM salaries; SELECT emp_no FROM salaries GROUP BY emp_no; 그리고 DISTINCT를 사용하면서 많은 사람들이 헷갈리는 부분..
-
[Spring] Filter와 Inteceptor 란 무엇일까?Server/Spring 2021. 6. 30. 14:15
들어가기 전에 클라이언트가 Request를 보내면 Controller로 오기 전에 만나는 여러 관문들이 존재합니다. DispatcherServlet 에 대해서는 저번 글에서 정리했었습니다. 그리고 Interceptor, AOP가 존재하는데요... AOP는.. 어떤 것이었죠? Spring 삼각형 중에 하나였습니다. 아주 중요한 내용 중에 하나이지만 이번 글에서는 Filter와 Interceptor에 대해서 알아볼 것입니다. Spring Filter란 무엇일까? Filter는 말 그대로 어떤 것을 걸러내는 역할을 하는데요. 그림에서 보면 DisPatcherServlet 앞에 Filter가 존재하는 것을 볼 수 있습니다. 즉, 클라이언트의 요청에 대해서 사전에 걸러내는 역할을 합니다. (ex: CORS, XS..
-
[Java] Checked Exception vs Unchecked Exception 정리Language/Java 2021. 6. 28. 11:34
체크 예외와 언체크 예외(Checked, Unchecked Exception) 자바의 예외는 크게 3가지로 나눌 수 있습니다. 체크 예외(Checked Exception) 에러(Error) 언체크 예외(Unchecked Exception) 자바에서 에러, 예외 관련된 클래스들의 계층구조는 위와 같습니다. Throwable 클래스를 기준으로 Error, Exception 클래스로 나뉘어집니다. 왼쪽에 보이는 Error는 말 그대로 에러와 관련된 클래스입니다. 그리고 오른쪽에 보이는 Exception 도 말 그대로 예외와 관련된 클래스입니다. 자바에서는 실행 시(runtime) 발생할 수 있는 프로그램 오류를 에러(error)와 예외(exception) 두 가지로 구분하였습니다. 에러(Error)란? 에러는..
-
[Spring] Spring Security와 Swagger 같이 사용하는 법Server/Spring Boot 2021. 6. 27. 20:13
Spring Security Swagger 에러 해결 이번 글에서는 Spring Boot에서 Security와 Swagger를 사용하면서 만난 문제를 해결한 과정에 대해서 정리해보려 합니다. 프로젝트를 진행하면서 특정 URI로 시작하는 것이 아니라면 시큐리티 단에서 걸러내는 작업을 해보고 싶어서 Spring Security를 아주 간단하게만 적용을 해보고자 하였습니다. 하지만 적용을 하다 보니.. Swagger 관련해서 문제점이 생겼는데요. 그 부분에 대해서 간단하게 정리해보겠습니다. Spring Security는 어떻게 적용했을까? 처음에는 Spring Security는 비밀번호 단방향 암호화를 하는데만 사용했기 때문에 위의 설정정도로만 아주 간단하게 했습니다. 그래서 위와 같이 /api/v2로 시작하..
-
[MySQL] Inner JOIN과 Outer JOIN의 차이가 무엇일까?Book/Real MySQL 2021. 6. 25. 15:35
JOIN 정리하기 이번 글에서는 JOIN에 대해서 알아보겠습니다. (JOIN에 대해서는 아는데 INNER, OUTER 용어가 헷갈려서.. 정리를 해보려 합니다.) JOIN의 종류 JOIN의 종류는 크게 INNER JOIN과 OUTER JOIN으로 구분할 수 있고, OUTER JOIN은 다시 LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN으로 구분할 수 있습니다. 조인의 처리에서 어느 테이블을 먼저 읽을지를 결정하는 것은 상당히 중요하며, 그에 따라 처리할 작업량이 상당히 달라집니다. INNER JOIN은 어느 테이블을 먼저 읽어도 결과가 달라지지 않으므로 MySQL 옵티마이저가 JOIN의 순서를 조절해서 다양한 방법으로 최적화를 수행할 수 있습니다. 하지만 OU..
-
[AWS] Load-Balancer, CodeDeploy, Docker로 CI/CD 하기Cloud/AWS 2021. 6. 17. 16:57
Docker, CodeDeploy, Load-Balancer로 무중단 배포하기 이번 글에서는 현재 진행하고 있는 프로젝트 에서 무중단 자동화 배포를 하는 과정에 대해서 정리를 해보겠습니다. 대신 EC2 생성(jar 배포) 등등 세세한 부분까지 다루지는 않고 큰 부분들만 다루어보겠습니다. (그래서 이 글은 따라하면서 보기는 애매할 수 있어 실습을 해보고 싶다면 제 블로그 다른 AWS 관련 글 들을 많이 참고해주세요. 이 글은 그냥 이렇게 했구나 하고 보기만 하는!) 프로젝트 전체의 아키텍쳐는 위와 같습니다. 이 중에서 Docker, Load-Balancer, CodeDeploy로 어떻게 무중단 배포를 하였는지에 대해서만 알아보겠습니다. (Jenkins 관련 설정을 다루지 않습니다.) 간단하게 프로젝트 배포..
-
[Spring] yml 파일 dev, prod, local 환경으로 간단하게 분리하기Server/Spring Boot 2021. 6. 16. 17:52
application.yml dev, prod, local 환경 분리하는 법 이번에 프로젝트를 진행하면서 마무리가 되었을 쯤에 개발, 운영, 로컬 환경으로 분리시키는 작업이 필요했습니다. 그래서 이번 글에서 application.yml을 사용할 때 prod, dev, local로 나눠서 작업하는 법에 대해서 간단하게 알아보겠습니다. 하나의 yml 파일 내에서 ---을 통해서 구분하는 것도 가능하지만 yml 파일이 거대해지다 보니.. 위 처럼 환경마다 파일을 만들어서 총 4개의 yml 파일을 생성하였습니다. application.yml을 보면 위와 같이 맨 위에 공통으로 쓰이는 설정 값들을 놓고, ---을 구분 후에 아래의 prod, dev, local 환경을 분리했습니다. profile 값에 맞는 설정 ..