1. 개요 토비님의 스프링부트 강의를 보고 자주 쓸만한게 있다면 커스텀 어노테이션을 만들어보자 생각이 들어서 간단하게 슬랙 메세지를 보내는 기능을 만들어보기로 했습니다. 이번 포스팅에서는 따로 개념적인 부분을 크게 언급하지 않고 어떤 흐름으로 작업했는지에 대한 내용이므로 주요 키워드는 Annotation, AOP, Async, DI 이니 따로 해당 개념을 어느정도 보시고 이 포스팅을 보시면 편하실거라 생각됩니다. 2. Slack Bot Part 이 기능에서는 코드 작업 외에 슬랙 메세지를 작성해줄 봇이 필요합니다. 그렇기에 먼저 Slack Bot 을 만드는 내용을 다루기에 이미 가지고 계시다면 아래 3번 부분으로 넘어가주세요. a. Create App(Bot) 먼저 slack api 사이트에 접속하고 우..
0. 관련 포스팅 [Airflow] Airflow 란? [Airflow] Airflow 설치 (with. docker compose) 1. 개요 이번 설치 포스팅은 테스트용으로 Docker 환경에서 Airflow 사용을 목적으로 하고있다. 사용하는 서버 환경이 Docker 환경이라면 동일한 설치 방법으로 진행하여도 무관하다. Airflow에서 제공하는 Docker Compose 파일을 기반으로 하기 때문에 기존 시스템에 추가적으로 설치하여 사용하고자 한다면 따로 설정을 추가적으로 해줘야한다. (docker-compose 파일에는 airflow 사용에 필요한 웹서버 및 DB 도 포함하여 설치된다.) 2. 환경 OS : MacOS(Sonoma M1 MacSilicon) Lang : Python 3.9 Air..
0. 관련 포스팅 [Airflow] Airflow 란? [Airflow] Airflow 설치 (with. docker compose) 1. 개요 Airflow는 배치 중심 WorkFlow를 개발, 예약 및 모니터링하기 위한 오픈 소스 플랫폼이며, 2014년 10월 에어비앤비에서 점차 복잡해지는 WorkFlow를 관리하기 위한 해결책으로서 시작하였다. Airflow의 확장 가능한 Python 프레임워크를 사용하면 거의 모든 기술과 연결되는 WorkFlow를 구축할 수 있다. 제공되는 웹 인터페이스는 작업 흐름 상태를 관리 하는데 유용하고, 단일 프로세스부터 분산 설정까지 다양한 방식으로 배포 할수 있다. 2. 특징 Dynamic : Airflow 파이프라인이 Python 코드로 구성되어 동적 파이프라인 생..
1. 문제 스프링부트 컨테이너를 불러와 테스트해야하는 경우 @SpringBootTest 어노테이션을 사용하여 테스트를 진행하게 되는데... 찾아보니 가끔 Import가 안되는 이슈가 발생하는거같다. (gradle clean 후 다시 빌드하여도 해결 되지 않았다.) IDE 문제인지 실행하면 또 되는 경우도 있지만 안되는 경우도 있기 때문에 기록으로 남겨본다. 2. 환경 OS : MacOS(Sonoma, M1 MacSilicon) Framework : Spring Boot 3.1.4 Language : Java 17 Type : Gradle IDE : IntelliJ 2. 해결 해결 방법은 매우 심플한 편이다. build.gradle 파일을 보면 SpringBoot Test에 사용될 라이브러리에 대한 Dep..
1. 개요 팀플 시작하면서 깃헙 작업 내용을 알림으로 받을 겸 Slack - Github 연결 작업을 진행하였다. 내가 Commit 내용으로 적은 내용을 Merge(또는 Pull Request) 시, 슬랙에서 자동으로 메시지가 작성되도록 하는 작업이다. 2. Slack - GitHub 연동 어떤 사이트에서 작업해야는지 헛갈릴 수 있으니 각 주제 옆에 괄호로 작업되는 위치를 달아두었으니 참고하자. a. GitHub App 설치 (Slack) 먼저 Slack에 Git Repository를 연결하기 위한 GitHub App을 설치해줘야한다. 설치가 되어있지 않다면 Slack 좌측 Apps 탭에서 Add apps 버튼을 클릭하고 GitHub를 검색해서 설치하면 된다. b. Invite GitHub (Slack)..
1. 개요 기존에는 SDK 설치할때 IDE 또는 프레임워크 Init 프로젝트 만들때 설치하거나 직접 사이트를 들어가서 설치하는 경우가 많았다. 이런 귀찮은 부분을 해결해주는 툴을 토비님의 스프링부트 강의를 듣는 중에 SDK MAN 소개가 나와서 포스팅 해보려한다. 2. SDK MAN SDK MAN의 공식 홈페이지에 들어가면 Unix 시스템에서 여러 소프트웨어 개발 키트를 손쉽게 관리할 수 있는 툴이라고 소개되어 있다. 버전 관리와 변경에 용이하고 apt, pip, RVM, rbenv 와 Git 과 같은 CLI(Command Line Interface)에서 영감을 받아 개발되었다고 한다. 특징은 아래 이미지와 같다. 3. Install 설치는 MacOS 기준으로 작성하였으며, Windows 환경에서는 별도..
1. 개요 간단하게 클라우드 컴퓨팅에 서버를 여는건 쉽게 접근이 가능하다. 하지만 컨테이너 기술이 들어가면 생각보다 볼게 많아진다. 관련 공부를 차근차근 해보고자 사용에 필요한 CLI 와 컨테이너 관리시스템을 설치해보았다. 2. kubectl? 쿠버네티스 커맨드 라인 도구인 kubectl을 사용하면 쿠버네티스 클러스터에 대해 명령을 실행할 수 있다. kubectl을 사용하여 애플리케이션을 배포하고, 클러스터 리소스를 검사 및 관리하고, 로그를 볼 수 있다. 3. kubectl Install 설치 환경은 MacOS M1 애플 실리콘 환경이다. 다른 환경의 설치 방법은 여기를 참고하자. 설치 방법은 아래 3가지로 가이드를 하고 있는데, Homebrew가 설치되어 있으니 2번째 방법으로 설치하고자 한다. (b..
1. 개요 이번 포스팅은 노드 진영의 백엔드 프레임워크 중 하나인 NestJS 에 대해 알아보고자 한다. 상세한 명칭 설명보다는 러프하게 적어볼 예정이기 때문에 모르는 단어의 경우 검색해보면 자세한 내용이 많이니 참고해주길 바란다. (비동기 논블로킹, 이벤트드리븐 등은 Node.js 특징에 더 가깝기에 이 부분은 따로 포스팅을 진행해볼 예정이다.) 2. NestJS? NestJS 는 Node.js 런타임 위에서 동작하는 TypeScript용 오픈소스 백엔드 애플리케이션 프레임워크이다. 프로그레시브 JavaScript를 사용하고 TypeScript 로 구축되어 완벽하게 지원하며(순수 JavaScript로도 개발 가능) OOP(객체 지향 프로그래밍), FP(기능 프로그래밍) 및 FRP(기능 반응 프로그래밍)..
0. 관련 포스팅QueryDSL 설정하기QueryDSL DTO 반환 방법QueryDSL 동적 쿼리 적용QueryDSL 사용자 정의 레포지토리 적용QueryDSL 페이징 적용 1. 개요QueryDSL에서 JPA Pageable 객체를 받아 페이징하는 부분에 대한 정리 내용이다. 2. 구현이번 포스팅에서는 아래 3가지 메소드에 대한 구현체를 작성해 볼 예정이다. searchPageSimple() : 기본 사용 방법searchPageComplex() : 카운트 쿼리 별도 설정 방법searchPageOptimization() : 별도 쿼리 및 PageExecutionUtils 를 이용한 Page 객체 반환 방법 구현체는 이전 포스팅에서 만든 MemberRepositoryImpl 클래스에 만들었고Member..
0. 관련 포스팅QueryDSL 설정하기QueryDSL DTO 반환 방법QueryDSL 동적 쿼리 적용QueryDSL 사용자 정의 레포지토리 적용 QueryDSL 페이징 적용 1. 개요기존 JPA Repository에 연결하여 별도의 클래스에 QueryDSL 구현체 클래스를 구성하고 JPA Repository 인터페이스에서 호출하여 사용하는 방식에 대한 포스팅이다.(꼭 QueryDSL이 아니더라도 다른 라이브러리 사용에도 적용가능한 기능이다.) 하나의 Repository 를 호출해서 사용하기에 여러 클래스를 호출하지 않아서 좋긴 하지만별도로 연결에 필요한 인터페이스를 구성해야하고 구현체의 클래스 명 규칙을 지켜야한다는 점이 있다. '필수로 구성해야한다기 보다는 하나의 방식으로 봐주면 좋을 듯 하다.' ..