Reactive Stream 에는 다양한 프레임워크, 라이브러리들이 존재한다. 이것들은 각자의 고유한 이름과 특징을 가지고 있다. 어떤 것들이 있는지 간단하게 정리해 본다. Reactive Streams 저수준의 규약으로 주로 자바 인터페이스(Interface) 로 구현 되어 있다. 명시적인 back-pressure 으로 Publisher 와 Subscriber 의 기본 빌딩 블록을 표현한다. Java 9 에서 java.util.concurrent.Flow 로 구현되어 있다. RxJava 이것은 Reactive Extension 이다. Neflix 에서 개발해 오픈소스로 전화하면서 세상에 알려졌다. ReactiveX 라고도 불린다. 브릿지 Reactive Stream 이라고 말하기도 하는데, Reactive Stream 을 위한 타입 전환을 지원한다. Reactor 자바 프레임워크 […]
Reactive Stream 기본 아이디어
자바 9에서 소개된 Reactive Stream 은 비동기(Asynchronously), 논 블럭킹(Non-Blocking)이 특징이다. 그렇다면 왜 이것이 특징이되어야만 했나. 이 특징에 반대되는 개념은 블럭킹(Blocking) 이며 블럭킹을 발생시키는 요인은 동시식 요청인 것이다. 결과적으로 이 둘을 해결해야만 하는 과제를 안고 있었는데 Reactive Stream 이 이 문제를 해결했다고 볼수 있다. 이 글에서 Reactive Stream 에서 핵심 특징의 아이디어를 아주 가볍게 고찰해 본다. 일반적인 데이터 처리 흐름. 데이터를 처리를 어떻게 할까? 좀 더 정확하게 표현을 한다면 데이터 처리를 어떠한 형태를 가지고 할까? 대부분 위와 같은 형태를 가진다. 첫째로 […]
Gradle 설치
이 문서는 Gradle 설치에 관한 것이다. 설치할 시스템은 Linux 이다. 설치(Installation) Gradle 공식 페이지에서 다운로드가 가능하다. 다음과 같이 압축을 해제하면 기본적으로 설치는 끝난다. 환경변수 설정 쉘 환경변수는 두가지로 다음과 같이 설정을 해줘야 한다. 쉘 환경변수는 계정에만 적용할 수도 있고 전체 시스템에 적용할 수도 있다. GRADLE_HOME GRADLE_HOME 은 Gradle 설치한 홈 디렉토리를 지정하면 된다. GRADLE_USER_HOME 이 디렉토리는 다운로드한 리소스, 컴파일된 빌드 스크립트들을 캐쉬하는데 사용된다. 의존성 라이브러리를 다운로드 하는 디렉토리이기도 하다. 다음과 같이 디렉토리를 생성해 준다. 이제 이것들을 모두 쉘 환경변수로 등록해 […]
배민의 배신??
배달의 민족이 딜리버리 히어로에 매각(?) 됐다. 국내 배달앱 1위를 달리는 배달의 민족을 인수한 딜리버리 히어로는 이미 요기요 배달앱을 인수해 한국 시장에 진출한 상황이다. 이런 상황에 배달의 민족을 인수한 딜리버리 히어로는 국내시장에서 사실상 독점적 지위에 올랐다라고 밖에 말할 수 밖에 없다. 그런데, 논란은 배달의 민족이 독일계 딜리버리 히어로에 매각한 것을 두고 ‘배신’ 이라는 성토가 이어지고 있다는데 있다. 국내에 자영업자들의 고열을 빨아 성정한 배달의 민족… ‘민족’ 이라는 어찌보면 ‘국내용’ 간판을 단것도 사람들의 마음을 아프게 한것도 있을지도 모른다. 이런 논란을 뒤로하고 이것을 바라보는 […]
스트림(Stream)
자바(Java) 세계에서 언제부터인지 스트림(Stream) 이라는 단어를 목격하게 되었다. 내 기억으로는 Java 8 에서부터 시작된 것 같은데 난데없는 이 단어가 왜 그렇게 핵심이 되었는지가 의문이였다. 도대체 왜 스트림(Stream) 이냐 하는 질문에 대한 대답을 듣기도 어려웠던 시절이기도 하다. 그져 사용하는 방법을 익히는데에 몰두하는 모습만 목격됐을 뿐이다. java.util.stream 스트림(Stream) 에 대한 정의는 다양하다. 데이터 소스(Array, List) 로부터 흐름을 가지는 데이터의 집합체이며 통합연산을(bulk processing) 통해 데이터를 변형시키고 최종적으로 소비자가 그 데이터를 소비하도록 한다. 스트림을 다루게 되면 항상 다음과 같은 데이터 소스들을 만나게 된다. 모두 […]
Time-Series data 특징
Time-Series 데이터베이스가 존재한다. InfluxDB, Prometheus 등이 대표적인데 Time-Series 데이터베이스의 특징에 대해서 정리 본다. High-speed data ingest: ‘고속 데이터 수집’ 으로 번역된다. IoT 사용 사례나 시장 분석 데이터와 같이 꾸준히 고속으로 도착하는 연속된 혹은 한꺼번에 밀려드는 대량의 데이터를 처리해야 한다. 대부분의 솔루션들은 데이터를 24시간 365일 처리하도록 되어 있다. Immutable data: ‘변경될 수 없는 데이터’ 로 번역된다. Immutable 은 프로그래밍에서도 자주 언급되는 단어다. 데이터베이스에 한번 Insert가 되면 데이터 포인트는 데이터가 만료(expire) 되거나 삭제(delete) 되기전까지 그 어떠한 변경도 일어나지 않는다. 이런 데이터는 전통적으로 […]
대한민국 병.
앞에 DBA 에 대한 비판글을 쓴적이 있다. 실제로 겪은 일이기도 하고 실제로 일어나는 일이기도 하다. 혹자는 “너의 경험이 전부가 아닐 진데, 전체로 매도하고 있다” 라고 항변하겠지만 전체적인 흐름을 모르고 하는 소리다. 환경의 변화 = 안해도되는 것들. DBA 들도 환경의 변화를 겪고 있다. 적어도 내가 있는 분야, 그러니까 구체적으로 말하면 AWS 클라우드 시스템을 다루다보면 이러한 현상을 자주 목격한다. AWS 클라우드에는 관리형 데이터베이스인 RDS 서비스가 존재한다. 데이터베이스 서버를 설치하거나 백업을 직접 구축하는 것이 없이 이러한 것들을 웹 인터페이스를 통해서 손쉽게 할 수 […]
소프트웨어 엔지니어링에서 파이프라인(Pipeline)은 무엇인가? Deployment, CI & CD 파이프라인에 대한 소개
이 글은 bmc blogs 의 “What is a Pipeline in Software Engineering? Intro to Deployment, CI, & CD Pipelines” 을 번역한 것 입니다. 원작자의 허락없이 재개시 및 상업적 이용은 불가합니다. https://www.bmc.com/blogs/deployment-pipeline/ 소프트웨어 엔지니어링 팀에서 파이프라인(pipeline)은 개발자나 DevOps 전문가가 효율적이면서도 확실하게 그들의 코드를 컴파일(Compile), 빌드(Build) 그리고 그들의 프로덕션 컴퓨팅 플랫폼에 배포(Deploy) 하게 해주는 자동화된 프로세스들의 묶음(set) 이다. 파이프라인이 이래야 한다거나 반드시 활용해야할 도구(Tools)를 지정하는 강하고 빠른 규칙은 없지만, 파이프라인이 가져야할 가장 일반적인 컴포넌트들이 있다. 빌드 자동화(build automation)/지속적 통합(continuous integration), 테스트 자동화(test […]
한국 SI를 망치는건 프리랜서들이다.
프리랜서라는 길을 걷다보면 언제나 슬픈 이야기들을 자주 접하곤 한다. 짧은 일정으로 인한 월화수목금금금, 악독한 원청업체 거기다 중간에 사람만 채우고 돈만 때가는 보도방 등으로 인해서 한국 SI 가 발전이 없는 날이 계속된다는 슬픈 이야기… 물론 과도한 업무, 중간에 마진 갈취등은 개선되어야 한다. 누구나 다 인간적인 삶을 권리는 존재하니까. 하지만 프리랜서 생활을 하다 느끼점은 정 반대라는 것이 놀랍다. 프리랜서들 만큼이나 노력과는 거리가 먼 사람들도 없다는 것이 나의 결론이다. 그들을 보고 있자면 정해진 루틴, 자신이 프로젝트를 하면서 익힌 Tip 같은 것 외에는 거의 […]
DNF 사용하기
CentOS 8 로 넘어오면서 기본 패키지 매니지먼트로 dnf 가 되었다. 여전히 yum 을 지원하지만 앞으로는 dnf 로 쭉 간다고 하니 이참에 배워보자고 생각하지만…. 겁나 빡치는게, 이제 그만 바꿨으면 한다. 뭔 yum 정도로도 충분히 잘 쓰고 있고 괜찮다고 싶다. 무슨 겁나 가볍네, 더 빠르네 어케 좋네… 응 yum 도 그렇게 느리고 그렇게 무겁지도 않아! 도대체 뭘 할때마다 갈아 엎고 이걸 새로 배우라고 하니.. 뭐 어쩌것나.. 그렇게 하겠다는데, 닥치고 배워야지! dnf 햐.. 쓰기도 귀찮다… “DNF is the next upcoming major version of […]