Spring: 필터(Filter)가 인터셉터(Interceptor)와 다른점
·
Spring 기초/Spring 기초 지식
이번 포스트에서는 Spring Filter에 대해서 알아보도록 하자 1. Spring에서 Filter의 개념 필터의 정의 필터는 웹 애플리케이션에서 클라이언트의 요청과 서버의 응답을 가로채는 재사용 가능한 코드 조각이다. 서블릿 스펙의 일부로, 요청이 서블릿에 도달하기 전과 응답이 클라이언트로 반환되기 전에 특정 작업을 수행할 수 있다. 서블릿 필터의 기본 원리 필터 체인을 통해 여러 필터를 순차적으로 적용할 수 있다. 각 필터는 doFilter() 메서드를 통해 요청과 응답을 조작하고, 필터 체인의 다음 필터나 최종 목적지(서블릿 또는 정적 리소스)로 요청/응답을 전달할 수 있다. 스프링 부트에서 필터의 역할 스프링 부트는 자동 구성을 통해 필터를 쉽게 추가하고 관리할 수 있게 해준다. 보안, 트랜잭션..
AWS Secrets & ECS SpringBoot 설정 (3-2): 성공적인 배포 완료
·
AWS/ECS, ECR
이번에는 ECS의 배포 오류(환경 변수 주입 오류)를 해결하는 과정을 설명한다. 이전에는 url, username, password라는 환경변수를 Secrets Manager에서 읽어오지 못하는 문제가 발생했었는데 이번에는 특정 키를 직접 찾아서 참조하는 방식에 대해서 알아본 후에 적용해서 오류를 해결했다. 1. Secrets Manager의 secret에서 특정 키만 참조하는 방식 설명 1-1. secret의 키 참조방식 조금 조사를 해본 결과 Secrets Manager에 만든 보안 암호(secret)의 특정 키를 참조하는 방법은 다음과 같다. ARN 뒤에 콜론(:)을 추가하고 키 이름을 명시해야 한다. 이후 맨 뒤에::을 붙여준다. 예시: arn:aws:secretsmanager:region:acc..
AWS의 RDS(PostgreSQL)와 SpringBoot 연동하기
·
AWS/RDS
이번 포스트에서는 RDS로 생성한 PostgreSQL 데이터베이스를 개발 중이던 SpringBoot 프로젝트와 연동해 보도록 하자 1. Gradle 의존성 추가하기 1-1. 의존성 추가하기 SpringBoot 프로젝트에서 postgreSQL을 사용하기 위해 Gradle에 의존성을 추가한다. // postgreSQL runtimeOnly 'org.postgresql:postgresql' 1-2. 주의사항 Gradle 의존성을 추가했다면 꼭 프로젝트에서 Gradle을 reload 해줘야 한다. 좌측의 코끼리를 누르거나 우측의 Gradle 버튼을 클릭해서 새로고침을 해주도록 하자 그래야 의존성을 다운로드해서 추가한다. 좌측의 dependency 폴더 하단에 아래와 같이 추가가 되었다면 잘 다운받은 것이다. 2..
[Java] 추상화란 무엇인가?
·
JAVA
자바의 "추상화"의 개념을 알아보고 스프링을 이것을 어떻게 사용하는지 알아보자 📌 서론 항상 추상화를 사용하고 있지만 누군가 "그래서 대체 추상화가 뭔데?"라고 물어볼때마다 바로바로 떠오르지 않았고 많은 고민을 해야했다. 이런 점에서 알지도 못하면서 사용하고 있다는 점에 답답함이 느껴져서 정리를 시작했다. 1. 추상화(Abstraction)의 기본 개념 추상화란? 추상화는 복잡한 시스템을 단순화하는 프로그래밍 기술이다. 이는 개발자가 복잡한 내부 작업을 몰라도 기능을 사용할 수 있게 해준다. 왜 필요한가? 복잡한 시스템을 이해하고 사용하기 위해서는 많은 시간과 노력이 필요하다. 추상화를 통해 이러한 복잡성을 줄이고, 빠르게 그리고 안전하게 시스템을 사용할 수 있다. 실생활 예시 예를 들어, 자동차를 운전..
Pipeline 방식으로 Jenkins구축 - SpringBoot CI/CD 구축
·
DevOps
Pipeline 방식으로 젠킨스를 구축해 보자 이번 포스트에서는 설정과 사용 방법이 좀 더 복잡하지만 커스텀하기 좋고 세밀한 구성이 가능한 Pipeline 방식으로 Jenkins의 CI/CD를 모두 구현해보도록 한다. 이번에 적용시킬 CI/CD는 SpringBoot이다. 1. Jenkins CI(지속적 통합)를 위한 Script 추가 작성하기 1-1. 우선 Jenkins 대시보드 좌측 상단의 “새로운 Item” 버튼을 클릭해서 들어간다. 1-2. 아래와 같은 창이 나올것이고 여기서 Item의 이름을 적고 하단에서는 Pipiline을 선택한다. 1-3. Pipeline 작성하기 아이템을 생성하면 아래와 같이 생성한 파이프라인의 설정 페이지로 넘어갈 것이다. 위의 설정들은 skip하고 아래로 스크롤을 내려서..
Jenkins 깃허브 훅 설정 - GitHub hook trigger for GITScm Polling 설정하기
·
기타/WEB, DB, GIT
Jenkins에서 CI/CD를 구축하다 보니 "빌드 유발"에서 GitHub hook trigger for GITScm Polling가 존재했고 이에 이것을 어떻게 설정하는지 설명하고자 한다. 1. Github에서 세팅하기 1-1. Settings 들어가기 Jenkins의 CI/CD에 연결할 repository 상단의 Settings를 클릭해 들어간다. 1-2. Webhooks 들어가기 Settings 좌측의 meun bar에서 Webhooks를 클릭한다. 아래와 같이 페이지가 나올것이다 1-3. Webhooks 설정하기 우측의 "Add webhook" 버튼을 클릭한다. 여기서 Payload URL의 url 수정을 해줘야 한다. 아래와 같은 식으로 적어주자 http://{내 jenkins서버 접속 url}..
Spring Boot: Gradle 버전 확인하기
·
Spring 기초/Spring 설정
Spring Boot: Gradle 버전 확인하기 📌 서론 이번 포스트에서는 특정 API나 Jenkins를 사용할때 Spring과 그 tool의 Gradle 버전을 맞춰주기 위해 필요한 Spring Boot 프로젝트의 gradle 버전 확인하는 방법을 소개한다. 1. IntelliJ에서 프로젝트 내부 파일 검색하기 인텔리제이 기준으로는 shift + shift (shift두번 빠르게 클릭)으로 파일명을 검색하는게 가장 빠르다. 이 파일을 검색해 보자 : gradle-wrapper.properties 2. 파일 경로 확인하기 gradle-wrapper.properties 파일로 들어간 후 아래의 이미지와 같이 intelliJ 좌측 상단을 보면 동그라미가 겹쳐진 모양이 있는데 이걸 클릭한다. 동그라미를 클릭..
AWS EC2에서 Docker와 Jenkins로 CI/CD 환경 구축하기
·
DevOps
이번에는 EC2에서 Docker를 띄운 후 Jenkins를 구축해 보자 1. EC2 인스턴스에 SSH 접속 AWS 콘솔에서 EC2 인스턴스의 IP 주소를 확인한 후, 터미널을 열고 SSH로 접속한다. 아래의 방법을 통해 Termius로 접속할수도 있다. 2023.10.25 - [AWS] - AWS - EC2 생성과 Termius 접속방법 AWS - EC2 생성과 Termius 접속방법 코딩은 글쓰기라고 생각한다. 꾸준히 기록하며 내 개발 실력을 키울것이다. curiousjinan.tistory.com 2. 패키지 업데이트와 Docker 설치 2-1. 먼저 패키지 업데이트를 진행한다. sudo apt-get update 2-2. Docker 설치에 필요한 패키지 설치 sudo apt-get install ..