Development
-
함수형 프로그래밍, 커링, 모노이드, 펑터..Development/Architecture 2026. 2. 18. 18:56
함수형 프로그래밍 순수 함수(Pure function)와 불변 데이터(Immutable data)를 중심으로 프로그래밍을 구성하는 패러다임.순수 함수 : 같은 입력에 대해서 항상 같은 출력을 반환하고, 외부 상태를 변경하지 않는 함수다.불변성 : 데이터를 생성한 후에는 변경이 되지 않고, 변경이 필요하면 새로운 데이터를 만든다.일급 함수(First-Class Function) : 함수를 일반 변수처럼 취급하여 변수 할당, 인자 전달 및 반환값으로 사용 가능하도록 하는 특성이다.고차 함수(Higher-Order Function) : 함수를 인자로 받거나 함수를 반환하는 함수다.함수 합성(Function Composition) : 함수들을 조합하여 다양한 함수를 만들 수 있다.// 작은 단위 함수들val r..
-
아키텍처 퀀텀 (Architecture Quantum)Development/Architecture 2026. 2. 17. 18:24
아키텍처 퀀텀 (Architecture Quantum)아키텍처 퀀텀은 높은 기능 응집도, 높은 정적 커플링, 동기적 동적 커플링의 특성을 띤, 독립적으로 배포 가능한 아티팩트다.모놀리식 아키텍처는 정의에 따라 단일 아키텍처 퀀텀이다.마이크로 서비스와 같은 분산 아키텍처는 서비스를 독립적으로 배포가 가능하기 때문에 각각이 아키텍처 퀀텀이 될 수 있다. (서비스가 서로 격리되어 있다고 해서 퀀텀이 생성되는 것은 아니다.)독립적으로 배포가 가능해도 공유 데이터베이스와 같은 공통 결합점이 생긴다면 아키텍처 퀀텀에 포함된다. 따라서 단순히 배포의 경계만 봐서는 아키텍처 퀀텀을 가늠하기 어렵다. 정적 커플링데이터베이스는 정적 커플링을 판단하는 기준으로, 단일 데이터베이스에 의존하는 시스템은 1 이상의 퀀텀을 가질 ..
-
[Coroutine] 코루틴 학습 - 17 (Flow processing)Development/Kotlin 2022. 5. 28. 17:27
map, filter suspend fun main() { flowOf(1, 2, 3, 4) .map { it * it } .filter { it % 2 == 0 } .collect { println(it) } } // 4 // 16 컬렉션에서 흔하게 사용하는 map과 filter 기능과 같다. take and drop suspend fun main() { ('A'..'Z').asFlow() .take(5) .collect { println(it) } println() ('A'..'Z').asFlow() .drop(20) .collect { println(it) } println() } // A // B // C // D // E // // U // V // W // X // Y // Z take는 el..
-
[Coroutine] 코루틴 학습 - 16 (Flow lifecycle functions)Development/Kotlin 2022. 5. 25. 07:59
Flow는 한 쪽에서 다른 쪽으로 흐르는 파이프와 유사하다. Flow가 예외가 발생하거나 요청이 완료되었을 때, 이 정보는 전파되어 중단 단계에서 Flow를 close시킨다. Flow 연산의 결과로 값, 예외, 특정 이벤트들을 수신할 수 있다. onEach suspend fun main() { flowOf(1, 2, 3, 4) .onEach { println(it) } .collect() } // 1 // 2 // 3 // 4 flow의 각 값에 대한 연산을 수행할 경우엔 onEach를 사용할 수 있다. onEach의 람다 표현식은 일시중단 되는동안, 각 종단 요소들이 순차적으로 처리된다. suspend fun main() { flowOf(1, 2) .onEach { delay(1000) } .colle..