일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- docker
- Storm
- Spring XD
- 제주
- SBT
- apache storm
- Spring
- Domain Driven Design
- Spring Boot
- 스프링 배치
- 엘라스틱서치
- Java
- Angular2
- Clean Code
- hdfs
- hadoop
- scala
- intellij
- elasticsearch
- 도메인주도설계
- elastic search
- Gradle
- design pattern
- hibernate
- spark
- nginx
- Spring Batch
- DDD
- Linux
- Hbase
- Today
- Total
목록분류 전체보기 (236)
욱'S 노트
효과적인 모델링의 요소 모델과 구현의 연계 - 반복주기 내내 연결고리를 유지해야 한다.모델을 기반으로 하는 언어 정제 - 누구라도 모델의 내용을 별도 해석 없이 이해할 수 있어야 한다.풍부한 지식이 담긴 모델 - 데이터 스키마뿐만 아니라 행위와 규칙까지 모두 표현모델의 정제 - 중요한 개념은 계속해서 더해져야 하며, 쓸모가 없어진 개념은 제거되어야 한다.브레인스토밍과 실험 - 계속해서 토의해야 하며 실험실로 옮겨 테스트를 해야 한다. 지식탐구 폭포수개발 방식 - 업무전문가 -> 분석가 -> 프로그래머, 피드백이 전혀 없어 실패할 수 밖에 없음이터레이션 방식 - 모델을 만들지 않음. 추상화가 되지 않아 지식 축적이 실패. 모델과 구현이 떨어짐 즉 업무전문가, 분석가, 프로그래머가 함께 모델을 만들어야 하며..
도메인이란? 소프트웨어로 해결하고자하는 문제 및 관심사. 일반적인 경우 비즈니스적인 성격을 띄지만, 몇가지 예외적인 예로 인프라스트럭처 자체가 도메인이 될 수도 있다. 소스관리 시스템, 배치스케쥴링 시스템등은 소프트웨어 자체가 도메인일 수 있다. 도메인 모델이란 ? 도메인주도설계에서 모델이란 도메인의 추상화이다. 즉 현실세계에 실재하는 문제에 대한 지식을 선택적으로 단순화하고 문제해결을 위해 구조화한 형태이다. 이는 현실을 사실적으로 반영하지 않고 문제해결을 위해 인위적으로 단순화된다. DDD에서 모델의 중요성 모델과 설계는 서로 영향을 주며 구체화된다. - 모델은 구현까지 긴밀하게 유지되며 유지보수되어야 한다.모델은 모든 팀구성원이 사용하는 유비쿼터스 언어이다. - 모든 구성원들은 모델을 통해서 의견을..
minimum granularity process에 부과된 최소 timeslice
부모-자식 관계는 본질적으로 내포된 모델과 비슷하다. 그러나 차이가 있다면 내포된 오브젝트는 하나의 도큐먼트에 저장되는 반면, 부모-자식에서는 부모와 자식이 완전하게 다른 도큐먼트로 저장된다는 것이다. 부모-자식 기능은 하나의 도큐먼트 타입이 다른 것과 연관되게 해준다. 내포된 오브젝트와 비교한 이점은 다음과 같다. 자식 도큐먼트의 리인덱싱 없이 부모 도큐먼트를 업데이트 할 수 있다.부모와 다른 자식의 영향 없이 자식 도큐먼트를 추가 변경 삭제할 수 있다. 이것은 특히 자식 도큐먼트들이 다수이고 자주 변경되고 추가될때 유용하다.자식 도큐먼트는 검색의 결과로 리턴될 수 있다.엘라스틱서치는 부모와 연관된 자식을 매핑을 유지하고 있어서 쿼리타임에 빠르게 조인할 수 있다. 그러나 이 경우 부모 자식 관계의 한계..
엘라스틱서치에서 하나의 도큐먼트에 대한 생성, 삭제, 업데이트는 atomic하다. 이 의미는 같은 도큐먼트내에 저장된 엔티티에도 동일하다. 예를 들어 우리는 블로그포스트와 그의 코멘트를 하나의 도큐먼트로 저장할 수 있다. PUT /my_index/blogpost/1{ "title": "Nest eggs", "body": "Making your money work...", "tags": [ "cash", "shares" ], "comments": [ { "name": "John Smith", "comment": "Great article", "age": 28, "stars": 4, "date": "2014-09-01" }, { "name": "Alice White", "comment": "More like..
엘라스틱서치는 다른 종류의 종이다. 특히 당신이 SQL의 세상으로부터 왔다면. 엘라스틱서치는 많은 이점이 있다. : 성능, 확장성, NRT 서치, 대용량 데이터 분석 등. 또한 쉽게 이러한 일들을 수행할 수 있다. 그러나 마법같이 모든 것을 해결해줄수는 없다. 이에 우리는 어떻게 동작하고 당신의 요구사항을 어떻게 동작하게 만들수 있는지를 이해해야 한다. 엔티티간의 관계를 처리하는 것은 관계를 지정할 수 있는 스토어처럼 명백하진 않다. 데이터 정규화를 엘라스틱서치에 적용할 수 없다. Handling Relationships, Nested Objects 그리고 Parent-Child Relationship을 통해 우리는 가능한 접근법들의 특성과 제약에 대해서 알아볼 것이다. Handling Relations..
How streams work 스트림은 엘리먼트의 처리순서를 표현하고 이러한 엘리먼트들에 다른 종류의 연산을 제공한다.List myList = Arrays.asList("a1", "a2", "b1", "c2", "c1"); myList .stream() .filter(source -> source.startsWith("c")) .map(String::toUpperCase) .sorted() .forEach(System.out::println);스트림 연산은 intemediate 또는 terminal이다. Intermediate 연산은 stream을 리턴하여 세미콜론 없이 메소드 체이닝형식으로 사용할 수 있다. Terminal 연산은 void이거나 stream이 아닌 값을 리턴한다. 위의 예에서 filte..
Java 8의 가장 주요한 변화는 더 빠르고, 명확하게 코딩할 수 있는 펑션 프로그래밍을 수행할 수 있게 되었다는 것이다. 자바는 1990년대에 객체지향 프로그래밍 언어로서 설계되었다. 그 당시 객체지향 프로그래밍은 소프트웨어 개발의 주요한 패러다임이였다. 객체지향 프로그래밍 훨씬 전에 Lisp 이나 Scheme 같은 함수형 프로그래밍 언어가 존재하였지만 학술적 영역외에서는 별다른 빛을 보지 못하였다. 최근 함수형 프로그래밍의 중요설이 대두되고 있는데 그 이유는 동시성과 이벤트 처리 프로그래밍에 적합히기 때문이다. 이 의미는 객체지향이 나쁘다는 것이 아니라, 객체지향과 함수형 프로그래밍을 적절히 사용하는 것이 좋은 전략이라는 것이다. 이것은 동시성에 관심이 없더라도 충분히 유의미하다. 예를 들어 컬렉션 ..
Trident는 스톰 위에서 실시간 집계를 수행하기 위한 하이레벨 추상화이다. 이것은 끊김없이 대용량 처리를 가능하게 해준다.(초당 수백만의 메시지) 지연없는 분산쿼리를 통해 스테이트풀 스트림 프로세싱을 가능하게 한다. Pig나 Cascading과 같은 고수준의 배치 프로세싱 툴에 친숙하다면 Trident의 개념은 매우 유사하다. Trident는 joins, aggregations, groupings, functions, filters 연산을 수행할 수 있다. 트라이던트는 어떤 데이터베이스 또는 퍼시스턴트 스토어의 위에서 스테이풀하고 인크리멘탈 프로세싱을 주로 처리하기 위해 추가되었다. Trident는 일관성 있고, 정확하고 쉽게 수행된다. Illustrative example 트라이던트에 관한 실증적인..
프로덕션 클러스터에서 토폴로지를 실행하는 것은 로컬 모드와 유사하다. 다음과 같은 스텝을 따른다. 1) 토폴로지를 정의한다. 2) 클러스터에 토폴로지를 서브밋하기 위해 StormSubmitter를 사용한다. StormSubmitter는 토폴로지의 이름, 토폴로지 설정 그리고 토폴로지를 입력받는다. 예제는 다음과 같다. Config conf = new Config();conf.setNumWorkers(20);conf.setMaxSpoutPending(5000);StormSubmitter.submitTopology("mytopology", conf, topology); 3) 코드와 코드에 모든 디펜던시를 포함한 jar를 만든다. (storm 관련 jars는 워커 노드에 의해 제공되니 제거한다.) 만약 메이븐..