전체 글

개발에 대한 내용을 주로 다루는 블로그입니다.
개발

카프카, 데이터 플랫폼의 최강자 - 2장 카프카 설치

책 카프카, 데이터 플랫폼의 최강자 2장에 대한 요약 정리 내용입니다. 2장 카프카 설치 분산 애플리케이션을 사용하게 되면 분산 애플리케이션 관리를 위한 안정적인 코디네이션 애플리케이션이 추가로 필요하게 된다. 이미 안정적인 코디네이션 서비스로 검증된 주키퍼를 많이 사용하고 카프카도 주키퍼를 사용한다. 주키퍼 주키퍼는 분산 애플리케이션을 위한 코디네이션 시스템 안정적인 서비스를 위해 분산되어 있는 각 애플리케이션 정보를 중앙에 집중 구성 관리, 그룹 관리 네이밍, 동기화 등의 서비스 제공 주키퍼에 저장되는 데이터는 모두 메모리에 저장되어 처리량이 매우 크고 속도도 빠름 주키퍼 설치 및 실행 자바는 설치되어있어야함 설치 ~ cd /usr/local/ ~ wget http://apache.mirror.cdn..

개발

카프카, 데이터 플랫폼의 최강자 - 1장 카프카란 무엇인가

책 카프카, 데이터 플랫폼의 최강자 1장에 대한 요약 정리 내용입니다. 1장 카프카란 무엇인가 탄생 배경 카프카는 링크드인에서 처음 출발한 기술 링크드인이 급속도로 성장하면서 발생하는 내부 여러 이슈들을 해결하기 위해 탄생함 엔드투엔드(end-to-end) 연결 방식의 아키텍처는 많은 문제점이 있음 실시간 트랜잭션(OLTP) 처리와 비동기 처리가 동시에 이뤄지지만 통합된 전송 영역이 없어서 복잡도 증가함 데이터 파이프라인 관리가 어려움 RDBMS, 하둡, 모니터링 시스템, 키-값 저장소 등이 처음에 각자의 목적에 맞게 만들어지지만 시간이 지나면서 서로 연결되어야하는 일들이 필연적으로 발생함 데이터 포맷과 처리 방법이 제각각이라 확장하기 힘들고 조정 및 운영에 비용이 많이듬 복잡성으로 인해 시스템 간 데이..

개발/Spring

Spring Controller에서 파라미터 검증 방법들

Validator Validator 인터페이스를 구현한 객체를 사용하는 방법. 컨트롤러 메소드 내의 코드 Validator를 컨트롤러에서 DI받아 두고 각 메소드에서 필요에 따라 직접 validate() 메소드를 호출하는 방법. @Valid를 이용한 자동검증 JSR-303 Valid 애노테이션을 사용하는 방법. @Valid 애노테이션을 차용했을 뿐 내부적으로는 스프링의 Validator가 사용된다. 컨트롤러 메소드 파라미터에 @Valid를 추가한다. WebDataBinder는 @InitBinder 메소드에서 등록된 Validator를 이용해 모델을 검증한다. 서비스 계층 오브젝트에서의 검증 Validator를 서비스 계층에서 DI받아 사용하는 방법. 서비스 계층을 활용하는 Validator 검증 관련된 ..

개발/Database

MySQL 하기 쉬운 실수와 Tip에 대한 소개

MySQL 사용하고 있지만 잘 모를 수 있는 부분들과 간단한 Tip에 대한 단편적인 내용들에 대한 정리한 내용이다. 정리 내용 # 인덱스 생성시 유니크 인덱스로 생성할 수 있는데, 유니크 인덱스는 제약사항일 뿐이다. 특별히 성능이 다른 인덱스보다 좋은 것은 아니다. (동일 컬럼 Non-unique 인덱스와 비교했을 때) MySQL은 특이한게 모든 인덱스의 끝에 PK 컬럼이 추가된다. 그래서 많은 키로 PK를 구성하는게 좋지 않다. PK를 구성하는 컬럼이 많다면 auto increment 컬럼을 PK로 설정하고 필요 시 다른 인덱스를 추가하는게 더 나은 선택이 될 수 있을 것 같다. # 단일 컬럼 인덱스는 잘못된 설계인 경우가 많다. 되도록이면 컬럼을 중첩시켜 인덱스의 갯수를 적게 유지하는 것이 좋다. #..

개발/자바

자바 성능을 결정짓는 코딩 습관과 튜닝 이야기

자바 성능을 결정짓는 코딩 습관 튜닝 이야기 요약 https://book.naver.com/bookdb/book_detail.nhn?bid=4441100 1. 너무나 많은 패턴을 사용하지 말라 - 꼭 필요한 패턴만 사용하라 2. 데이터 처리할때 TO(Transfer Object)패턴, (vo패턴)을 사용하고, 아니면 Collection 관련 클래스 이용하라. 3. 서비스 로케이터(Service Locator)패턴은 적용하면 대기시간을 줄수 있다. 4. 명명 규칙을 잘 지켰는가? 5. 필요한 부분에 예외 처리는 되어 있는가? 6. 예외 화면은 지정되어 있는가? 7. 예외처리를 e.printStackTrace() 해서 서버에 부하를 주지 말자 8. System.gc() 메소드를 이용해서 가비지콜렉션을 지운다..

개발/Spring

스프링 @Async를 통한 비동기 처리 및 설정값

@Async를 통해서 비동기 처리하는 방법 관련 내용 및 설정값들에 대해서 간단하게 정리한 내용이다. # @Async를 통한 비동기 처리 @Async 애노테이션을 통해서 메소드 호출을 비동기로 처리할 수 있는데 적용 방법은 비동기로 수행할 메소드(혹은 타입)에 @Async를 붙여주면 된다. 모든 메소드에 사용할 수 있는 것은 아니고 public void 혹은 public Future 타입의 메소드에만 적용할 수 있고 같은 클래스 내의 메소드 호출은 적용이 안된다. (다이나믹 프록시 적용이 가능해야 하기 때문임) (task:executor 설정 시 mode를 aspectj로 지정하면 이 제약이 없을 수도 있을 것 같다.) 작업의 결과값을 알아야하는 경우에는 Future 타입을 리턴 받아야 할 듯하다. 비동..

bebeside77
Spread your wings