Blog Posts

Spring 에서 Validation 하기(1)

API 를 개발하는 과정 등에서 중요한 부분이 요청 값에 대한 검증처리 일 것이다. 조금 더 편하게 데이터 유효성을 검사할 수 있는 방법을 알아보자.

Project 문서화에 대해서...

하나의 프로젝트를 시작하게 됨에 따라 고민해야하는 것들이 생긴다. 기본적으로 어떤 언어를 쓸 것인지? 어떤 프레임워크를 쓸 것인지 등…. 그 외에도 외부와 연동해야하는 시스템을 만드는 것이라면...

힘겨웠던 성능 개선 프로젝트(아이디어)

작년 옆팀으로 업무 지원을 위해 투입 된 적이 있다. 주로 사용하는 언어가 아닌 다른 언어로 운영되는 시스템이였고, 정말로… 히스토리가 많은 시스템이였다. 사업적 요소에 대한 기능...

[Kotlin 맛보기] 3. Class

open, abstract Kotlin 은 Java 와 다르게 기본적으로 final 이 적용되어 있다. 자바는 final 키워드를 사용하여 상속 또는 오버라이드를 못하도록 함. kotlin 에서는 상속 등을...

[Kotlin + Spring] 1. Jpa Entity Issue

상속 문제 Hibernate 의 지연로딩을 위해 Entity 를 상속하여 프록시를 만든다. Kotlin 에서 Java 관련 프레임워크를 사용하게 된다면 문제가 되는 부분 중 하나가 상속 이다....

[Chrome Extension 개발기] 3. 사용했던 API 들

최대한 빠르게 URL 을 찾기 위해 방법을 찾아봤다.

[Chrome Extension 개발기] 2. extension 기본

Chrome Extension https://developer.chrome.com/docs/extensions/mv3/manifest/

[Chrome Extension 개발기] 1. 왜? 크롬 익스텐션을 사용해서 개발했어?

고민시작 몇년전 회사를 이직하고 이것 저것 인수인계를 받으면서 각종 URL 들을 전달 받았었다. 배포시스템, wiki, 형상관리(멀티 모듈이 아니라서 컴퍼넌트별로 repository 가 따로 있었다.), jira 등…...

2022-05-12

작년의 나 제작년 말부터 다른 서비스에 인력이 급하게 필요하여 투입 됨. 그리고 기존 팀에서 개발했던 시스템 기반으로 플랫폼 쪽으로 팀이 분리가 되었다. 완전한 분리가 아닌...

[Cassandra] Primary Key

Cassandra Table 설계시에 중요한 Primary Key 에 대해서 공부해보자.

[Cassandra] Cursor paging

Cassandra 와 같은 nosql 을 사용했을 때, 전체 row 의 갯수를 조회하여 pagination 하는 방법은 득보다 실이 큰 상황이다. cursor base 로 pagination 하여 최대한...

[Cassandra] Counter Column 에 대해서

Cassandra Counter Column 에 대해서 Counter Type 에 대해서 : https://docs.datastax.com/en/cql-oss/3.3/cql/cql_reference/counter_type.html 그외 참고 링크 https://docs.datastax.com/en/cql-oss/3.3/cql/cql_using/useCountersConcept.html https://www.datastax.com/blog/whats-new-cassandra-21-better-implementation-counters https://docs.datastax.com/en/archived/cql/3.1/cql/cql_using/use_counter_t.html

[Spring-Kafka 경험기] Spring-Kafka JsonDeserializer 사용할 때 주의해야할 점

spring-kafka 를 사용해서 consumer 를 구축할 때, 아래와 같이 원하는 객체(TestV1DTO)로 바로를 사용하기 위해 JsonDeserializer 를 선언할 경우 리팩토링할 때 주의해야할 점이 있습니다.

Cache 를 적용하여 서비스 개선하는 방법...

캐싱 전략이라던가 local cache, global cache 등에 대한 정보들은 많다. 업무를 하면서 캐시를 적용하여 성능을 개선한다던가, 초기 캐시레이어를 도입할 때 고민했던 부분들에 대해서 정리해보았다. java,...

[Kafka 경험기] 데이터 순서 보장하기

데이터 순서 보장하기 카프카 Topic 은 순서를 보장하지 않지만, Partition 내에서는 순서가 보장된다. Topic 의 Partition 을 1개, 컨슈머를 1개로 설정하면 순서는 보장 될 것이다....

[Kafka 경험기] 무한 컨슘 및 재처리 기능 추가시 고려할 부분

무한 컨슘 및 재처리 기능 추가시 고려할 부분 계속해서 컨슘 발생 컨슈머에서 max.poll.interval.ms 가 지나도 poll() 이 발생하지 않을 경우, 해당 consumer 에 문제가 생긴걸로...

[Kafka 경험기] Header 사용하기

Header 사용하기 https://kafka.apache.org/documentation/#record https://issues.apache.org/jira/browse/Kafka-Header%20%5Bb%5D payload 에 담기에는 애매한 데이터들을 추가할 때 사용하기 좋습니다. http header 와 같이! 예시) 2개의 Producer 에서 1개 Consumer 로 데이터를...

[Kafka 경험기] 데이터 저장 기간

데이터 저장 일시 Kafka 는 데이터를 디스크에 저장하고 보관기간을 설정 합니다. 보관기간을 설정할 때 사용할 데이터 사이즈도 고려해야할 대상이지만 아래와 같은 경우도 고려하면 좋다. 최대...

[Kafka 경험기] Data 가 1MB 초과 했을 때

Data 가 1MB 초과 했을 때 프로듀싱할 데이터 사이즈가 1MB 를 초과할 경우 아래와 같은 에러가 발생.

[GRPC] 3. GRPC 를 사용해보면서... #1

Server 에서 구현체를 만들지 않으면? client 에서 io.grpc.StatusRuntimeException 가 발생함.

[GRPC] 2. Java 나 Spring 에서 GRPC 사용해보기.

Java에서 사용해보기 build.gradle ```gradle buildscript { repositories { mavenCentral() }

[GRPC] 1. GRPC 살펴보기

GRPC 란? Google 에서 만든 RPC Google Remote Procedure Call 다른 RPC 와 같이 IDL(interface definition language) 를 이용하여 정의함.

Java String 에 대해서

java.lang.String 클래스 Java 에서 문자열을 위한 클래스 불변객체! (immutable)

[Kotlin 맛보기] 2. Null 에 대해서...

kotlin 은 기본 값이 null이 아닌 not null 이다. nullable 하게 사용하기 위해서는 ?를 선언해야한다.

[Spring Batch] spring batch 성능 개선하기(경험 공유)

단순 Select 후 값을 변환하여 Insert 하는 Batch Job 개선하기 A 테이블에서 B 테이블로 Snapshot 데이터를 저장하는 배치 입니다.

[Spring 다시보기] Spring DI

DI 란? Dependency Injection 의존성 주입 객체를 직접 생성하는 것이 아닌 외부에서 생성한 후 주입하는 것

[Kotlin 맛보기] 1. 기본문법

코틀린 공식 홈페이지, 문서 코틀린 연습해보기 코틀린을 처음 배우면서 작성한 글 입니다.

[RestHighLevelClient] 2. Index 생성, 삭제 등

index 생성 kibana dev tool PUT ${indexName} { "settings":{ "number_of_shards": 3, "number_of_replicas": 2 },"mappings":{ "properties":{ "message":{ "type":"text" } } } }

[RestHighLevelClient] 1. 기본 사용법

Java High Level REST Client 를 사용하여 Elasticsearch를 사용해보자!

docker-compose를 이용한 Local 개발용 ELK 세팅하기

로컬에서 개발환경을 구축할 경우에 사용할 수 있도록 docker-compose를 사용하여, elasticsearch와 kibana를 세팅할 예정 n대를 띄우지 않고 싱글노드로도 충분히 테스트 할 수 있으므로, 한대를 띄우는 내용으로...