전체 글 썸네일형 리스트형 코틀린 기본 문법 함수규칙 : fun + 함수명 +(+ 파라미터명 + 파라미터 변수형+)+ : + 반환 변수형 = 비즈니스 로직 이때 파라미터 변수형과 반환 변수형이 같은 경우 생략이 가능함. 자바의 void 함수를 표현할 경우 코틀린에선 unit 으로 선언함.fun main() { println("Hello World!") println(sum(1, 5)) println(sum1(1, 5)) sum2(1, 5)}//반환값을 정의한 함수fun sum(a: Int, b: Int):Int = a+b//파라미터와 반환값이 같은 경우 반환형 생략 가능fun sum1(a: Int, b: Int) = a+b//반환값이 없는 void 함수인 경우 unit으로 선언할 수 있음fun sum2(a: Int, b: In.. 더보기 도메인 주도 설계 첫걸음-Part2 05_ 간단한 비즈니스 로직 구현트랜잭션 스크립트 : 단순 비즈니스 로직 설계 아키텍처로 트랜잭션을 적용해서 작업 성공/실패를 보장하도록 하는 구조이다. 액티브 레코드 : 비즈니스 로직은 단순하지만 자료구조가 복잡한 경우 선택하는 아키텍처로 액티브 레코드 객체는 간단한 CRUD와 가공 로직을 가질 수 있다. 06_복잡한 비즈니스 로직 다루기 (도메인 모델 패턴)밸류 오브젝트 : 불변의 객체로 값을 통해 식별할 수 있음으로 ID 값이 없는 객체다. 데이터 + 행동도 모델링이 가능하다. 애그리게이트 : 트랙잭션 경계를 공유하는 엔티티 계층으로 애그리게이트 경계에 속한 데이터는 서로 강력한 일관성을 유지해야 된다.도메인 이벤트를 통해 외부 엔티티와 소통할 수 있다. 도메인 서비스 : 비즈니스 로직만 담은 상태.. 더보기 도메인 주도 설계 첫걸음-Part1 01_ 비즈니스 도메인 분석하기비즈니스 도메인이란? - 기업의 주요 활동 영역을 의미한다. 하위 도메인이란? - 비즈니스 활통의 세분화된 영역이다.하위 도메인 유형1) 핵심 하위 도메인 : 타 회사와의 경쟁력 우위의 원천이며 복잡성이 높은 도메인으로 수익에 영향을 크게 주는 영역2) 일반 하위 도메인 : 경쟁력 X, 모든 회사가 비슷한 방식으로 제공하며 외부 솔루션을 도입할 수 있는 영역3) 지원 하위 도메인 : 우리 회사만의 기술이나 경쟁력 X, 핵심 하위 도메인보다 복잡하지 않고 간단한 영역하위 도메인 비교하위 도메인 경계 식별유스케이스를 정의한 뒤 도메인 분석을 직접 수행해야 된다.도메인 전문가는 어떤 사람인가?- 구현할 비즈니스의 모든 복잡성을 알고 있는 주제 전문가. 02_ 도메인 지식 찾아내기.. 더보기 3장 Redis 자료구조 String - Key/Value 형태로 유일하게 1:1 매핑 구조인 자료구조임 모든 자료구조는 Set을 통해 기존 키에 새로운 값을 넣으면 덮어쓰여짐 [Set 옵션] NX 옵션 - 새로운 값으로 저장되는걸 막을 수 있음 XX 옵션 - 키가 있는 경우에만 새로운 값으로 저장할 수 있음 String은 숫자형태도 저장이 가능한데 이때 INCR/DECR을 통해 1씩 증가/감소 시킬 수 있고 INCRBY/DECRBY로 입력한 값을 증가/감소 시킬 수 있음. 이때 INCR/DECR 같은 커맨드는 원자적이기 때문에 동시 호출에 대한 원자성이 보장됨 - 예로 A, B에서 동시에 10이라는 데이터를 갖은 키에 INCR 커맨드를 호출하더라고 하나의 커맨드만 수행되어 10에서 11로 변경됨 MSET/MGET 커맨드를 통해.. 더보기 4장 카프카 상세 개념 설명(2) 4-4) 스프링 카프카 스프링 카프카 : 카프카를 스프링 프레임워크에서 효과적으로 사용할 수 있도록 만들어진 라이브러리를 의미함 4-4-1) 스프링 카프카 프로듀서 카프카 템플릿 클래스를 통해서 데이터를 전송할 수 있음. [카프카 템플릿을 사용하는 방법] 1) 기본 카프카 템플릿을 사용하는 방법 [application.yaml] spring: kafka: producer: bootstrap-servers: my-kafka:9092 acks: all @SpringBootApplication public class DefaultKafkaProducer implements CommandLineRunner { private static String TOPIC_NAME = "test"; @Autowired pri.. 더보기 4장 카프카 상세 개념 설명 4-1) 토픽과 파티션 카프카에서 토픽은 가장 중요한 역할이며 토픽의 파티션 개수는 카프카의 성능과 관련이 많음 4-1-1)적정 파티션 개수 - 고려사항 : 데이터 처리량, 메시지 키 사용 여부, 브로커 & 컨슈머 영향도 1. 데이터 처리량 파티션 : 카프카 병렬처리의 핵심, 파티션-컨슈머 1:1 매핑임 => 그러므로 파티션 개수를 정할때 해당 토픽에 필요한 데이터 처리량을 측정하여 정하는게 중요함. 데이터 처리 속도를 올리는 방법 1) 컨슈머 처리량을 늘리는 방법 - 컨슈머 서버의 사양을 늘리거나 GC 튜닝 등을 활용할 수 있으나 컨슈머 특성상 다른 시스템(=오라클, 하둡..)과 연동하여 데이터 처리함으로 한계 존재 2) 파티션 개수 늘리는 방법 - 가장 확실한 방법임 프로듀서가 보내는 데이터양보다 파.. 더보기 3장 카프카 기본 개념 설명 3-1) 카프카 브로커, 클러스터, 주키퍼 브로커 : 클라이언트와 데이터를 주고받는 주체, 데이터 분산 저장으로 장애 발생에 대한 대응이 가능하도록 도와주는 애플리케이션 (한 클러스터(=렉)에 3대 이상의 브로커로 운영하길 권장함 - 클러스터로 묶인 브로커끼린 데이터 분산 저장 및 복제하는 역할) 프로듀서 -> 브로커 -> 컨슈머 관계로 데이터를 주고받는다. 프로듀서 : 데이터 전송 브로커 : 요청받은 토픽의 파티션에 데이터 저장 및 컨슈머가 데이터 요청하는 경우 데이터 전달 컨슈머 : 데이터 요청 config/server.properties의 log.dir 옵션에 정의된 디렉토리에 데이터를 저장함 카프카는 별도 db나 캐시 메모리를 사용하지 않고 파일 시스템에 데이터를 저장하기 때문에 파일 입출력으로 .. 더보기 Apache Kafka 완전 정복 : 클러스터 구축부터 MSA 환경 활용 - 기본 개념 Event란 비즈니스에서 일어나는 모든 일 (데이터)을 의미한다. 예를 들어 은행은 고객이 월요일 오전 10시 33분에 고객 b에게 300달러를 송금하는것, A 택시가 현재 위치한 GPS좌표, 상점 B의 상품이 오후 3시 33분에 배송을 시작하는 것 이 모든 행위를 이벤트로 볼 수 있다. 이처럼 비즈니스 모든 영역에서 광범위하게 발생함으로 이벤트는 빅데이터 특징을 갖고 있다 그래서 이런 연속적인 많은 이벤트들의 흐름을 Event Stream이라 칭한다. 대표적인 이벤트 스트리밍 플랫폼으로 아파치 카프카가 존재하며 아파치 카프카는 크게 3가지 특징을 갖고 있다. 1. 이벤트 스트림을 안전하게 전송한다. (Pub & Sub 기능) 2. 이벤트 스트림을 디스트에 저장한다. (다른 이벤트 스트림과의 차별점) 3.. 더보기 이전 1 2 3 4 ··· 7 다음