본문 바로가기

반응형

기타

(29)
[git] git hooks / pre-commit 기존에 github-actions 를 사용하여 github 서버에서 테스트 코드가 실행되고 도커 이미지가 빌드 및 배포가 되는 ci/cd 를 구성해 본 경험이 있다. 그런데 개발을 진행하다 보니 로컬에서부터 ci 를 적용하여 자동으로 테스트 코드가 실행되고 코딩 컨벤션을 자동으로 적용할 수 있도록 하면 좋을 거 같다는 생각이 들었다. 로컬에서 작업을 하면서 자동으로 ci 를 적용해볼 수 있을 만한 도구들을 찾으면서 많이 사용하는 git hooks 와 pre-commit 모듈 등에 대해서 알아보았다. 1. git hooks Git hooks 는 특정 이벤트가 발생했을 때 자동으로 정해진 스크립트를 실행할 수 있도록 해주는 git 의 기능이다. Git hooks 는 이벤트에 따라서 client hook 과 ..
[Gradle] Gradle 사용법 - 설치, 초기화 및 지난 글에서는 Gradle 이 무엇인지 알아보았다. 이번에는 Gradle 을 설치하고 사용해보는 튜토리얼을 진행해보려 한다. 해당 내용은 Gradle 의 Getting Started 내용을 읽고 작성하였다. 1. Gradle 설치 & Gradle Wrapper Gradle 을 사용하기 위해서는 우선 설치를 진행해야 한다. 하지만 신규 Gradle 빌드를 생성하는 것이 아니라 이미 존재하는 Gradle 빌드를 실행하려 한다면 따로 Gradle 을 설치할 필요가 없다. Gradle 빌드는 기본적으로 gradlew 또는 gradlew.bat 파일을 가지고 있는데 이들은 Gradle Wrapper 라고 한다. - Gradle Wrapper Gradle Wrapper 는 미리 지정된 버전의 Gradle 을 호출하..
[Gradle] Gradle 이란? Springboot 프로젝트를 생성할 때에 project 종류로 maven 과 gradle 을 선택할 수 있다. 프로젝트를 생성해서 개발을 할때 주로 gradle 을 사용하는데, dependencies 등을 설정하고 빌드할 때 gradle 을 사용하지만 자세한 용도와 내용을 잘모르고 사용하고 있다. 그래서 Gradle 에 대한 내용을 정리해본다. 아래의 내용은 Gradle User Manual 의 What is Gradle? 페이지의 내용을 정리한 것이다. 1. Gradle 이란? Gradle 은 오픈소스 빌드 자동화 툴로 거의 모든 종류의 소프트웨어를 빌드할 수 있는 유연성을 가지고 있다. Gradle 은 빌드하려는 대상이나 빌드 방식에 대한 가정, 제한을 거의 하지않는데, 이러한 성질이 Gradle ..
[git] git 브랜치 병합 전략 (merge, rebase) git 을 사용하여 작업을 할 때 기능별로 작업별로 브랜치를 새로 생성하여 작업을 하게된다. 각각의 브랜치는 작업이 끝나면 병합을 진행해주어야 하는데 git 에서는 크게 merge 와 rebase 두가지 방법을 사용한다. 병합 전략이 여러가지인 이유는 병합을 진행한 후에 두 브랜치 간의 commit history 를 어떻게 남길지 선택해야 하기 때문이다. 어떤 전략을 선택하느냐에 따라서 각각의 브랜치에서 작업을 수행한 기록인 commit history 를 하나의 브랜치로 합쳤을 때 어떤 형식과 순서로 기록이 남겨질지 달라진다. 그렇기 때문에 개발자는 자신의 상황과 함께 개발하는 조직에 알맞은 방식을 사용하여서 commit history 가 관리되도록 해야한다. 1. merge merge 는 일반적으로 알..
[기타] Sync - Async / Blocking - Non-Blocking Async 관련해서 공부를 하다가 항상 sync - async 와 비교되어 나오는 blocking - non-blocking 개념이 궁금해서 정리를 해보았다. 사실 처음에 읽어 보았을 때는 동기 비동기와 비슷해 보였는데, 두 개념을 섞어서 비교해보니 차이점을 확실히 알 수 있었다. 1. Sync - Async 동기와 비동기는 특정 작업을 수행할 때 해당 작업의 완료 여부를 신경쓰는지에 따라 구분된다. A 함수가 B 함수를 호출하여 작업을 수행할 때, A 함수가 B 함수가 종료될때까지 기다리다가 그 결과값을 받고나서 다음 작업을 수행하는 경우를 동기, 반면에 B 함수의 종료까지 기다리지 않고 A 함수가 다음 작업을 수행하면 비동기가 된다. 이때 B 함수의 작업 결과는 콜백함수로 반환된다. 결국 A 함수가 ..
[Kafka] Kafka Consumer 예제 1. KafkaConsumer Kafka cluster 의 레코드를 사용하는 클라이언트, 컨슈머 객체를 생성하는 클래스이다. 매개변수로 넘겨주는 서버 정보, 데이터 역직렬화 정보, 그룹 ID 등을 설정으로하여 객체를 생성한다. 컨슈머는 poll 메서드를 사용해서 브로커에서 데이터를 가져온다. poll 메서드는 마지막으로 사용한 데이터 이후 입력된 데이터들을 가져온다. poll 메서드는 timeout 을 매개변수로 줄 수 있는데, 만약 레코드가 존재하면 해당 레코드를 반환하지만 timeout 을 초과하면 빈 레코드 집합이 반환된다. - bootstrap.servers 클라이언트가 레코드를 전송하기 위해서는 레코드가 전송될 토픽의 파티션 정보를 알아햐 한다. 클라이언트가 찾고자 하는 토픽 파티션의 메타데이터..
[Kafka] Kafka Producer 예제 1. KafkaProducer Kafka cluster 로 record 를 송신하는 클라이언트, 프로듀서 객체를 생성하는 클래스이다. 매개변수로 입력받은 설정에 따라 카프카 클러스터와 연결하여 동작한다. 레코드를 전송하는 메서드는 send() 인데, 이는 비동기로 동작한다. 프로듀서 객체가 정상적으로 동작하기 위해서는 카프카 클러스터 서버 정보와 데이터 직렬화 정보를 입력해주어야 한다. - bootstrap.servers 클라이언트가 레코드를 전송하기 위해서는 레코드가 전송될 토픽의 파티션 정보를 알아햐 한다. 클라이언트가 찾고자 하는 토픽 파티션의 메타데이터를 요청하기 위한 설정으로 클라이언트와 클러스터의 초기 연결을 위해 사용한다. 브로커의 'hostname:port' 정보의 리스트 형태를 가지며, ..
[Kafka] Kafka 기본 개념 1. event streaming 이벤트 스트리밍은 DB, 센서, 모바일 장치, 클라우드 서비스 및 소프트웨어 애플리케이션과 같은 이벤트 소스로부터 실시간 데이터를 이벤트 스트림 형식으로 획득하는 방식을 말한다. 이 방식은 이후에 이벤트를 검색할 수 있도록 이벤트 스트림을 저장하고, 실시간으로 이벤트 스트림을 조작, 처리하고 이에 대한 응답을 수행 할 수 있다. 또한 필요한 경우 이벤트 스트림을 다른 목적지로 전달하기도 한다. 이벤트 스트리밍은 데이터의 지속적인 흐름과 해석을 통해 정확한 데이터가 정확한 위치와 시점에 존재하도록 한다. 이러한 이벤트 스트리밍은 실시간 금융거래, 자동차 산업의 차량 실시간 모니터링과 같이 다양한 산업에서 사용할 수 있다. 또한 회사의 여러 부서에서 생성된 데이터를 연결, ..

반응형