VCS(Version Control System) 이란 무엇인가? VCS는 Version Control System의 약자로, 파일의 변화를 추적하고 관리하는 시스템이다. 소프트웨어 엔지니어링에서 VCS는 코드의 변화를 추적하고 관리는데 사용된다. 대표적으로는 Git과 Subversion이 있으며, 2018년 기준 Git의 점유율이 88.4%에 달하며(*1), 2022년 기준 90% 이상의 회사에서 Git을 사용할 것이라 추정된다. *1 : Stack Overflow 2018 Survey VCS가 중요한 이유 소프트웨어 엔지니어링에서 가장 중요하게 생각하는 것은 바로 유지보수성이다. 코드를 깔끔하게 짜는 것, 변수명을 깔끔하게 짓는 것, OCP 원칙을 지키는 것 모두 유지보수성을 위해 만들어진 원칙들이..
분류 전체보기
flatMapMerge는 무슨 역할을 하는가? flatMapConcat과 flatMapLatest는 flow에서 발행된 데이터를 변환할 때 발행된 순서대로 순차적으로 변환한다. 반대로 flatMapMerge는 변환을 병렬로 수행한다. 대부분의 연산이 flatMapConcat이나 flatMapLatest를 이용한 순차 처리에 해당하지만 들어오는 데이터들을 동시에 수집한 후 수집한 값들이 가능한 빨리 방출 될 수 있도록 병렬로 처리되어야 할 때가 있다. 예를 들어 비용 처리를 위해 수십개의 지출 데이터를 취합하여 합치는 작업을 할 경우 굳이 순차적으로 처리하지 않고 병렬로 처리되는 것이 빠를 것이다. flatMapMerge는 이러한 병렬 연산을 지원하기 위해 만들어진 연산자이다. flatMapConcat과 ..
flatMapLatest란? flatMapLatest는 flow를 최신데이터만을 이용해 새로운 flow로 변환할 수 있도록 도와주는 함수이다. flatMapLatest를 사용하면 flow에서 발행된 데이터를 변환하는 도중 새로운 데이터가 발행될 경우, 변환 로직을 취소하고 새로운 데이터를 사용해 변환을 수행한다. collectLatest의 경우 먼저 발행된 데이터를 처리하는 도중 새로운 데이터가 들어올 경우 이전 데이터 처리를 취소하고 새로운 데이터를 이용해 데이터를 처리하는데 flatMapLatest는 collectLatest와 동작이 매우 유사하다. flatMapLatest 동작 살펴보기 예를 들어 다음과 같은 flow가 있다고 해보자. 이 flow는 1과 5를 순차적으로 발행한다. val flow ..
Flow의 Flattening Operator flow는 데이터 파이프라인이다. 코드 상에서 데이터 파이프라인은 그 자체로 사용되는 경우는 거의 없으며 보통 다른 데이터 파이프라인들과 합쳐져 하나의 데이터 파이프라인을 완성한다. flow 또한 여러 flow가 합쳐져 하나의 flow로 만들어지기 위한 연산자를 제공하는데 데이터 파이프라인을 합치는(Flatten) 연산자여서 Flattening Operator(하나로 만드는 연산자)라 한다. 우리는 이번 글에서 가장 대표적인 Flattening Operator인 flatMapConcat에 대해 다뤄볼 것이다. flatMapConcat 은 무엇을 하는가? flatMapConcat은 여러 flow를 연결하는(concatenating) 연산자이다. 이름에서 알 수..
API 란? API란 개발자와 API 제공자 사이에 프로그램을 작성하기 위해 만든 규약(Protocol)이자 계약(Contract)이다. 더 자세히 들어가면 API는 Application Programming Interface의 약자로 개발자가 Application을 Programming하기 위해 만든 인터페이스이다. 개발자는 API 제공자가 정의한 프로토콜을 이용해 API 제공자가 정의한 기능을 사용할 수 있다. *인터페이스 : 외부에 공개되는 프로토콜 헷갈리지 말아야 할 것은 API는 인터페이스이므로 API는 그 자체로는 실제 어떻게 동작하는지에 대한 구현이 들어가지 않으며, API 제공자가 구현을 한다. 개발자는 API에서 제공하는 기능을 가져다 쓸 뿐이고, API 제공자는 API를 구현해 실제로..