본문 바로가기

Development

(39)
카프카 개요 1. 카프카 디자인의 특징 분산시스템 : 동일한 역할을 하는 서버를 추가하여 부하를 분산할 수 있다. 페이지 캐시를 이용한다 카프카 - 페이지캐시 - 디스크 작은 단위의 I/O를 묶어서 배치로 처리 2. 카프카 데이타 모델 2.1 토픽(Topic) 카프카 클러스터는 토픽에 데이타를 저장한다. 2.2 파티션(Partition) 토픽을 분할한 단위이다. 파티셔닝을 통하여 병렬처리가 가능하다. 단, 메시지의 순서는 각 파티션 내에서만 보장되며 파티션 사이의 순서는 보장하지 않는다. 파티션 수가 많으면 좋은가 ? 당연히 무조건 많다고 좋은 것은 아니다. 파티션 수가 많아짐에 따라 생기는 문제점이 있다. 파일 핸들러가 낭비될 수 있다. 장애 복구시간 증가 나중에 다루겠지만, 미리 언급하자면 카프카는 고가용성을 위..
코틀린 스터디 킥오프 코틀린의 주요 특성 JetBrains의 R&D 센터가 위치한 상트페테르부르크 근처의 코틀린(Ко́тлин) 섬에서… 블라블라 JVM 기반 언어로, 자바와 100% 상호운용성을 제공한다. 즉, 자바가 사용되는 모든 곳에서 이용 가능하다. 자바에 비하면 훨씬 간결하고 생산성 높고 안전하다 정적 타입 지정 언어 성능, 신뢰성, 유지보수, IDE 기능 활용 OOP와 FP의 특성을 지닌다. FP의 특성? First-class function : Function을 일반 값처럼 다룰 수 있다. 변수에 할당할 수 있고, 전달도 가능하다. 함수에서 새로운 함수를 생성하여 반환할 수도 있다. Immutability : 기본적으로 불변객체이다 No side-effect 코틀린이 지향하는 바는 ? 실용적이어야 한다. 간결해야..
개발자도 비즈니스 참여를 (번역) 루비에서 상속을 피하는 방법 을 읽고. (링크 유실) 요즘 '객체 지향 이란 무엇일까?' 라는 원론적인 질문에 꽂혀 있어서 그런지, 굉장히 흥미를 일으키는 제목의 글이었습니다. 저는 2년간 자바만 해서 루비를 전혀 모릅니다. 그래서 읽으면서 어림짐작으로 루비 소스를 자바 소스로 뇌컴파일 해가며 읽었는데 역시나 재밌었습니다. 상속이 아닌 위임으로 이 글은 제목 그대로 '상속을 피하기 위한'에 대한 솔루션을 제공하고 있습니다. 상속(확장)이 아닌 위임을 통해서 말이지요. 템플릿 메서드 패턴이냐 스트래티지 패턴이냐로 구분지어 볼 수도 있을 것 같아요. 물론 절대적으로 상속보다는 위임이 좋다는 건 아닙니다. 상황에 따라 충분히 선택의 여지가 있습니다. 이 글의 예에서는 스트래티지 패턴이 더 적합하다고 ..
Java Wrapper Class 의 캐싱 Wrapper Class Java에는 Primitive Type을 Reference Type으로 사용하기 위해서 만든 Wrapper Class가 있습니다.Primitive TypeWrapper ClassbyteByteshortShortintIntegerlongLongfloatFloatdoubleDoublecharCharacterbooleanBooleanvoidVoid Primitive Type 값을 Wrapper Class의 인스턴스로 변환하여 쓰는 과정을 Boxing, 그 반대를 Unboxing 이라고 하는데 Java 1.5 부터는 이를 자동으로 해주는 AutoBoxing/AutoUnBoxing을 지원해 줍니다. Boxing/Unboxing Integer n1 = 1; Integer n1 = new I..
Why Spring - 왜 스프링을 사용하지? Why Spring ? 스프링을 사용하기만 했지, 왜 스프링을 사용해서 개발하는 지에 대한 고찰을 해본적이 없다. 그래서 또 의식의 흐름대로 글을 써내려가 봅니다. 스프링은 프레임워크(Framework)다. 프레임워크 ! 즉, 소프트웨어의 설계와 구현에 있어서 전체적인 뼈대와 틀을 제공한다는 것이다. 조금 더 높은 추상화 레벨에서 보면 개발자가 개발하기 편하게 해주는 녀석이다.그렇다면 스프링은 어떤 방식으로, 어떤 컨셉으로 우리를 도와주느냐 ? 이 말을 설명하기에 앞서 그렇다면 스프링 혹은 다른 프레임워크 없이 오직 JDK로만 소프트웨어를 개발한다고 생각해보자. 개발 과정에서 끊임없이 인스턴스는 생성과 소멸을 반복할테고, 클래스들 사이에는 복잡한 의존관계를 가지기도 할 것이며, 반복되는 로직이 수없이 호..
객체지향 개발 5대 원칙 : SOLID 좋은 글 그간 SOLID 원칙에 대한 설명을 굉장히 많이 보았는데, 최근에 굉장히 명쾌하게 설명한 글을 발견 !객체지향 개발 5대 원리: SOLID클린 소프트웨어 : 애자일 원칙과 패턴, 그리고 실천 방법을 읽던 중에.
넷플릭스 마이크로 서비스 가이드 출처 및 링크 : https://www.youtube.com/watch?v=OczG5FQIcXw&feature=youtu.be
모듈화에 대하여 문득 모듈화에 대해서 생각하다가, 의식의 흐름대로 작성하였습니다. 문맥도 두서도 개연성도 없습니다. 대단한 내용은 더더욱 없습니다 ! : ) 의식의 흐름 #0.모듈화를 생각하기에 앞서 나의 코드를 보자.눈앞에서 흩날리고 있는 코드들 속에서 공통적인/반복적인 부분을 뽑아 내서 중복부터 제거하고. haha. DRY ! 의식의 흐름 #1.개발자는 역할과 책임을 특징 짓고 그것에 따라 적절히 분리할 수 있어야 해. 관찰력이 있어야해.왜냐하면? 무엇인가를 찾아낼 수 있어야 해.우리가 찾아야 할 대상은 다음과 같은 일련의 문장들로 표현될 수 있어.무엇 ?= 클라이언트에게 알리지 말아야 할 비밀= 클라이언트가 알 필요가 없는 사항= 변경될 가능성이 높은 부분= 복잡하고 어려운 부분= 세부적인 사항들 및 구현= 실제 작업해..