Avro 특정 언어에 종속되지 않은 언어 중립적 데이터 직렬화 시스템 하둡 Writable의 주요 단점인 언어 이식성을 해결하기 위해 만든 프로젝트 다른 시스템과 비슷하게 언어 독립 스키마로 기술 하지만 특정 스키마를 사전에 알지 못하더라도 해당 스키마에 부합하는 데이터를 읽고 쓸 수 있음 에이...
lombok
Lombok gradle dependency dependencies { ... compileOnly 'org.projectlombok:lombok:1.18.20' annotationProcessor 'org.projectlombok:lombok:1.18.20' } 장점 boilerplate code를 작성하는데 드는 시...
Bean
Bean이란? IoC 컨테이너에 의해서 생성되고 조립되고, 관리되는 오브젝트 Spring Bean 구성요소 class : Bean으로 등록할 java 클래스 id : Bean의 고유 식별자 scope : Bean을 생성하기 위한 방법(singleton, prototype 등) constructor-arg : Bean 생성시 생성자...
annotation
@Configuration 해당 클래스에서 1개이상의 Bean을 생성하고 있음을 명시 @Bean 어노테이션을 사용하는 클래스의 경우 반드시 @Configuration과 함께 사용해주어야 함. 만약 그렇지않으면, 생성된 객체가 싱글톤을 보장받지 못한다. @Component 직접 개발한 클래스를 Bean으로 등록하고자 하는 경우에 사용 @Target...
MSA
MSA의 등장배경 Monolithic Architecture 소프트웨어의 모든 요소가 한 프로젝트에 통합되어있는 형태. 소규모 프로젝트에 적합 한계점 서비스/프로젝트가 커질수록, 영향도 파악 및 전체 시스템 구조의 파악에 어려움이 있음. 빌드 시간 및 테스트시간, 배포시...
Monorepo
Monorepo 란? vcs에서 같은 repository에 여러 프로젝트들이 모여있는 소프트웨어 개발 전략 장점 코드 재사용이 쉬움 - 다른 개발자의 코드를 볼 수 있기 때문에, 코드 재사용이 쉽다. 빌드 최적화 - 여러 프로젝트들이 third-party dependency에 의존하고 있을때, 그 dependency...
Convention over configuration
Convention over configuration 프레임워크를 사용하는 개발자가 결정해야하는 것들을 flexibility감소 없이 감소시키는것. 예를들면, Sales라는 클래스가 model에 존재하고, 그 클래스에 대응하는 table은 기본적으로 “Sales”라고 불리는데, 오직 이러한 convention에 벗어날때만 (product sales...
build setting
api 와 implementation 차이점 api: 의존 라이브러리 수정시 본 모듈을 의존하고 있는 모듈들 또한 재빌드 A(api) <- B <- C 의 경우 C 에서 A 를 접근할 수 있음 A 수정시 B 와 C 모두 재빌드 implementaion: 의존 라이브러리 수정시 본 모듈까지만 재빌드 A(imp...
Kafka Trouble Shooting
The process cannot access the file because it is being used by another process. 위 경우는 다른 카프카가 이미 해당 파일을 사용하고 있기 때문에 발생한다. 가장 빠른 방법은 카프카 포트번호(default 9092)를 사용중인 카프카를 종료시키고 재실행하는 것이다. 즉, 9092 포트를 사...
[Trouble Shooting] Could not find gem 'nokogumbo(~> 2.0)' 해결하기
Jekyll 엔진 기반의 블로그에 글을 작성하고 커밋을 했더니, github Actions에서 다음과 같은 에러가 발생하였다. Run bundle install --local Resolving dependencies... Bundler could not find compatible versions for gem "nokogumbo": In Gem...