전체 글 53

카프카 101

https://youtu.be/kBGR6cwVqv0?si=kdTN_o9dZeaSpeX0 카프카란 무엇이고, 왜 사용되는 지 카프카는 실시간 이벤트 스트리밍 플랫폼이다. 실시간으로 발생되는 대규모의 데이터를 스트리밍하고 처리하고 분석하는 데 특화되어 있다. 라이브 스트리밍, 데이터 처리 및 분석과 관련된 특징들을 보면 다음과 같다. 메시지 큐를 사용해서 데이터를 배치 처리하고 순서를 보장 복제본을 운영하여 서버가 죽었을 때 다른 서버가 대응 트래픽에 따라 스케일 아웃할 수 있음 이벤트 자체를 저장하여 현재 상태에 이르기까지의 전체 과정을 볼 수 있음 데이터를 영구적으로 저장하여 데이터를 언제든 다시 활용할 수 있게 합니다. 이런 특징으로 인해 실시간, 대규모 데이터를 처리하고 분석해야 하는 곳에서는 카프카..

인프라 2023.10.02

카프카 스키마 레지스트리 구성하기

할 일 컨플루언트 카프카 다운로드 스키마 레지스트리 옵션 설정 스키마 레지스트리 실행 스키마 레지스트리 구성 컨프루언트 커뮤니티 팩 설치하기 스키마 레지스트리는 아파치 카프카에서 지원하지 않고, 컨플루언트 카프카에서 지원한다. 컨플루언트 카프카의 스키마 레지스트리를 사용할 때는 비상업적인 용도로 써야 무료다. sudo wget https://packages.confluent.io/archive/6.1/confluent-community-6.1.1.tar.gz sudo tar zxf confluent-community-6.1.1.tar.gz -C /opt/ sudo ln -s /opt/confluent-6.1.1 /opt/confluent 스키마 레지스트리 옵션 설정 sudo vi /opt/confluen..

인프라 2023.09.22

카프카 클러스터 구성하기

클러스터 구성 주키퍼 클러스터 1개 - 주키퍼 서버 3개로 구성됨 카프카 클러스터 1개 - 카프카 서비 3개로 구성됨 할 일 주키퍼/카프커 클러스터 공통 설정: JRE 설치, 호스트명 설정, 아파치 카프카 다운로드 주키퍼 클러스터에만 설정: 아파치 카프카 주키퍼 클러스터 설정 → 주키퍼 서버 띄우기 카프카 클러스터에만 설정: 아파치 카프카 카프카 클러스터 설정 → 카프카 서버 띄우기 공통으로 할 일 JRE 설치 sudo yum install java-17-amazon-corretto-headless 호스트명 설정 sudo vi /etc/hosts # 아래 내용을 추가한다. [주커퍼1 프라이빗IP] zookeeper1 [주키퍼2 프라이빗IP] zookeeper2 [주키퍼3 프라이빗IP] zookeeper3..

인프라 2023.09.17

LeetCode #424

https://leetcode.com/problems/longest-repeating-character-replacement/description/ Longest Repeating Character Replacement - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 제일 속도가 빠른 해답은 이건 데, count[s.charAt(start) - 'A']--해도 maxCount가 계산되는 것이 아직 이해가 안간다. class Solution { public in..

도메인 주도 설계 첫걸음 6장.

6장. 복잡한 비즈니스 로직 다루기 도메인 모델 패턴을 사용하여 복잡한 비즈니스 로직을 다룰 수 있다. 도메인 모델 패턴 비즈니스 로직에만 집중하여 복잡도를 줄인다: 비즈니스 로직 자체만으로 복잡하기 때문에, 더 복잡하게 만들면 안 된다. 비즈니스 로직 외의 것은 포함하지 않아야 한다. 예를 들어 DB 연결이나 외부 시스템 호출 등의 기술적 관심사같은 것들은 포함하지 않아야 한다. 코드에서 유비쿼터스 용어를 사용해야 한다: 구현하는 바운디드 컨텍스트의 유비쿼터스 용어를 사용해야 한다. 이렇게 함으로써 도메인 전문가, 개발자, 그 외 커뮤니케이션해야할 사람과 효율적으로 동기화할 수 있다. 구성요소: 밸류오브젝트, 애그리게이트, 도메인서비스 밸류 오브젝트 값 자체로 식별할 수 있는 데이터 값 자체가 식별자로..

설계 2022.09.25

도메인 주도 설계 첫걸음 5장.

5장. 간단한 비즈니스 로직 구현 간단한 비즈니스 로직을 구현할 때는 트랜잭션으로 데이터의 정합성만 신경쓰면된다. 트랜잭션 스트립트 패턴, 액티브 레코드 패턴을 사용한다. 트랜잭션 스크립트 패턴 레코드 변경 시, 트랜잭션으로 감싸 실패했을 때에 롤백하거나 보상 절차를 타도록 해야 한다. 단순히, 레코드를 트랜잭션으로 감싸기만 하면 된다고 생각하기 쉽지만... 의외로 신경써야할 포인트들이 있다. + 앞으로 이 책에서 소개할 여러 패턴의 기본이라고 한다. 정합성 깨지는 경우들: 트랜잭션 스크립트 패턴을 아예 안 쓴 경우 OR 잘 못 쓴 경우 1. 트랜잭션없이 여러 레코드를 업데이트하는 경우 여러 레코드를 한 함수 안에서 변경하는 경우 ➡️ 트랜잭션으로 감싸서, 실패한 경우 롤백하도록 한다. https://g..

설계 2022.09.25

React 환경변수 설정하기

리액트에서 허용하는 환경변수 REACT_APP_ 프리픽스가 있는 변수만 환경변수로 넣어준다. 예: REACT_APP_BASE_URL 프리픽스가 없으면 환경변수로 설정할 수 없다. 단, NODE_ENV, PUBLIC_URL은 리액트에서 이미 정의된 변수들은 예외 NODE_ENV는 npm test, npm start, npm build 명령어가 실행될 때 자동으로 test, development, production으로 설정된다. 임의로 값을 넣어줘도 리액트가 무시한다. 환경변수는 빌드 시 스태틱한 값으로 주입된다. 환경변수를 변경하면 새로 빌드해야 한다. npm start로 개발서버를 실행 중인 경우라면 재시작해야 한다. 빌드 파일은 사이트에 접속한 누구나 볼 수 있기 때문에 환경변수에 민감정보를 넣으면 ..

프론트엔드 2022.09.15

eslint plugin과 config 차이

ESLint Plugin - 나만의 검사 규칙을 만들 때 내가 만든 규칙이기 때문에 검사규칙에 대한 rule 정의 파일이 있다. 가져다 쓸 때는, 플러그인의 어떤 규칙을 사용할 것인 지 명시해야 한다. (내 규칙을 정의해놓기만 했고, 쓸 건지는 없으니까) { plugins: ['react'], rules: { 'react/button-has-type': 'error' } } 위에 처럼 활성화할 규칙들을 하나하나 명시해서 쓰는 것이 불편하니까, 활성화할 규칙을 모아 내부에서 설정으로 만들어 놓기도 했다. { // plugins: ['react'] 생략 - recommended 설정 안에 plugins: ['react']가 있기 때문 extends: ['plugin:react/recommended'] } E..

프론트엔드 2022.09.14

CRA에 Lint와 pre-commit hook 설정하기

리액트-타입스크립트 템플릿 프로젝트 만들기 CRA, typescript 템플릿 ESLint 설정하기 CRA로 생성한 프로젝트에는 이미 eslint관련 디펜던시가 존재하고, eslint 설정이 있기 때문에 따로 eslint, eslint-config, eslint-plugin 들을 받지 않아도 된다. 다만, 설정을 내 입맛대로 바꾸고 싶으면 수정이 필요할 수 있다. Prettier 설치와 설정하기 prettier와 eslint 규칙이 출돌하는 부분이 있어서 config, plugin 설치해야 한다. IDE의 autosave 옵션을 켜도 된다. husky 설정하기 커밋 전 코딩 컨벤션, 문법 오류 확인 또는 테스트를 해보는 용 lint-staged를 사용하여 스테이징 상태의 파일에 eslint와 pretti..

프론트엔드 2022.09.13

도메인 주도 설계 첫걸음 1장. 2장.

1장. 비즈니스 도메인 분석하기 비즈니스 도메인은 회사의 핵심 비즈니스를 말하며, 여러 개의 서브 도메인으로 나뉜다. 서브 도메인은 경쟁우위, 복잡성 등에 따라 유형이 분류되며 유형에 따라 직접 개발하는 것이 효율적인 것도 있다. 비즈니스 도메인 뭐 하는 회사야? 할 때의 "뭐" 예) 모노리스는 테마파크 운영 서비스를 개발하는 회사야 서브 도메인 비즈니스 도메인은 여러 개의 서브 도메인으로 나뉜다(회사를 경영하는 데 여러 개의 부서가 필요한 것과 같다) 꼭 소프트웨어 분야에만 한정된 것은 아니고, 회계, 고객서비스 등등 모든 영역이라고 보면된다. (개발팀만 있는 건 아니니까) 핵심 서브 도메인만 꼭 있어야 하는 것은 아니고, 세 개가 모두 있어야 기업이 운영될 수 있다. (모든 팀이 있어야 회사가 굴러가..

설계 2022.09.08