
[spring-boot-starter-actor] Spring 생태계에 Actor 초대하기
2025. 5. 16. 03:04
Open Source
Spring Boot 환경에서 상태를 공유해야 하는 기능이 필요할 때면 늘 고민이 생깁니다. "데이터베이스를 사용할까?", "레디스를 붙여볼까?" 이미 인프라가 잘 구축되어 있거나 프로젝트 규모가 크다면, 이런 미들웨어를 사용하는 게 크게 부담은 되지 않습니다. 하지만 이제 막 시작한 프로젝트이거나 예산이 빠듯한 경우라면 얘기가 좀 달라집니다. 클라우드에 Redis 클러스터를 올리는 비용도 무시할 수 없고, 단순히 DB를 상태 저장용으로 사용했을 때는 성능 저하나 부하 분산 같은 문제도 신경 써야 하거든요. 고민이 꼬리에 꼬리를 물기 시작합니다. “그럼 미들웨어 없이 상태를 공유할 수는 없을까?” 이런 생각 끝에 Actor Model이 이 문제를 꽤 효과적으로 풀 수 있지 않을까 싶어졌고, Java 진..

자고 일어나니 기여하던 오픈소스가 대박나있음
2024. 12. 18. 10:21
Open Source
올해 여름에 할 것도 없고 해서... 오픈소스 기여나 하자라는 생각으로 github을 둘러보고 있던 와중, Rust로 SQLite를 재작성하는 limbo라는 프로젝트를 알게 되었고 그 이후 틈틈이 기여를 했습니다. Limbo는 SQLite를 단순히 rust로 포팅하는게 아니라 기존 SQLite의 동기식 I/O를 비동기식 I/O로 전환하는 목표를 가지고 있었고, 그 목표에 어느 정도 동의하는 입장인지라 적극적으로 오픈소스에 기여했습니다. 다만 업무와 전혀 관련 없는 데이터베이스 도메인이었고 심지어 익숙하지 않은 rust를 사용하는 프로젝트여서 익숙해지는데 꽤 시간이 걸렸습니다. Limbo에 기여하면서 데이터베이스 도메인에 관심이 생겼고, 더 잘 이해해보고 싶은 마음에 여러 사이드 프로젝트를 진행했습니다. ..

[Pingora] Cloudflare 네트워크 프레임워크
2024. 3. 2. 00:56
Open Source
Cloudflare은 클라우드 벤더 중 하나로, 최근에 내부적으로 사용하던 Pingora를 오픈소스로 공개했습니다. 클라우드 서비스를 제공함에 있어 nginx의 한계를 극복하고자 자체적으로 Pingora를 개발해서 사용했다고 합니다. Pingora는 Cloudflare의 운영 환경에서 battle testing을 거쳤기 때문에 충분히 검증되었습니다. Pingora는 네트워크 애플리케이션 개발에 사용할 수 있는 라이브러리로, nginx와 같이 executable binary를 제공하지 않습니다. 기능프로토콜: HTTP/1, HTTP/2, end-to-end grpc, TCP/UDP 커스터마이징: callback, filter 특징Rust로 작성되었기 때문에 메모리 안전성이 뛰어남 멀티스레드 아키텍처를 ..

[Open Source] 돈내기 싫어 만든 크롬 익스텐션
2023. 11. 5. 19:03
Open Source
ChatGPT의 등장으로 개발자의 생산성은 크게 증가했습니다. 더불어 chatGPT를 효과적으로 활용할 수 있는 서비스를 사용하면 생산성을 훨씬 더 극대화할 수 있습니다. 하지만, 이런 서비스의 단점은 월별로 지불해야 하는 금액이 "ChatGPT API Key 사용료"와 "서비스 이용료"의 합계로 측정되어 월에 만원 이상의 금액을 지불해야 한다는 것입니다. 향상된 생산성을 생각해 봤을 때 충분히 납득할 수 있는 금액이지만, 앞으로도 오랜 시간 동안 이 서비스를 사용할 예정인 만큼 지출 금액을 무시할 수는 없다고 판단했습니다. 최근 이직 준비가 마무리되고 시간이 약간 남은 관계로, ChatGPT를 효과적으로 활용할 수 있는 크롬 익스텐션 개발을 시작하기로 결정했습니다. Free AI Sidebar chro..

[Central Dogma] 설정 관리의 최강자
2023. 6. 9. 21:04
Open Source/Central Dogma
Central Dogma는 라인에서 개발 및 관리하는 오픈소스입니다. 공식 사이트에서 CD(Central Dogma)는 다음과 같이 정의됩니다. Central Dogma is an open-source highly-available version-controlled service configuration repository based on Git, ZooKeeper and HTTP/2. 정의만 가지고 CD가 정확이 무엇을 하는지 모르겠으니, 그 기능에 대해 살펴보겠습니다. json, yaml, xml 형태의 설정파일을 CD에 저장하고 관리할 수 있습니다. 고가용성을 위한 복제 기능(multi-master repliaction)을 제공하고, 변경사항을 관리할 수 있습니다(version controlled ..

[Armeria] Armeria contribution - Log unhandled exceptions
2023. 3. 11. 01:18
Open Source/Armeria
이번 포스팅에서는 LINE의 대표적인 오픈소스인 Armeria에 기여한 경험을 공유하고자 합니다. Armeria Armeria는 Java, Kotlin 또는 Scala로 작성된 오픈 소스 비동기 HTTP 및 gRPC 클라이언트 및 서버 프레임워크입니다. Armeria는 java 진영의 대표적인 비동기 서버 프레임워크인 Netty를 기반으로 하며 netty를 더 쉽게 사용할 수 있는 API를 제공합니다. Netty를 기반으로 요청을 비동기적으로 처리하므로 확장성이 크다는 장점이 있습니다. Contribute Armeria는 annotated service를 통해서 요청을 처리할 수 있습니다. @Get("/hello") public String hello() { return "hello" } 하지만 anno..

[nGrinder] nGrinder을 이해하고 Script를 작성해보자
2022. 12. 3. 14:42
Open Source/Testing Framework
최근에 회사에서 데이터 마이그레이션을 대비하기 위해 서버의 평균 TPS가 얼마인지 확인해하는 요구사항이 있었습니다. 회사의 대표적인 테스팅 플랫폼으로 nGrinder가 있었기 때문에 nGrinder을 활용해 테스트를 진행했습니다. nGrinder을 학습 과정에서 발견한 유용한 정보들과 nGrinder 스크립트를 작성하는 방법을 공유하기 위해서 이번 포스팅을 작성하게 됐습니다. nGrinder란? nGrinder은 네이버에서 Grinder라는 테스팅 오픈소스에 유용한 기능들을 추가한 대표적인 테스팅 오픈소스 플랫폼입니다. Jython 또는 Groovy 언어를 통해 script가 작성 가능하고 여러 agent에서(컴퓨터) 부하를 발생시킬 수 있습니다. nGrinder의 사용법을 살펴보기 전에 용어와 개념에 ..

[Rancher] Docker Desktop을 대체해보자
2022. 12. 3. 13:36
Open Source
Docker desktop이 유료화되면서 회사에서 docker desktop을 무료로 사용하는 게 불가능해졌습니다. 팀에서 도커를 직접적으로 사용하지 않아 별도로 승인을 받기가 부담스러웠기 때문에 docker desktop의 대체제를 찾아야 했습니다. 참고로 저는 현재 Macbook M1을 사용하고 있습니다. 저는 docker desktop의 대체제로서 rancher을 선택했는데요, 비교적 간편한 UI의 형태이고 아직까지 M1을 지원하는 대중적인 소프트웨어가 눈에 띄지 않았기 때문에 선택했습니다. 사용법이 비교적 간편하지만 권한 문제로 골치 아팠던 경험이 있기에 설치법부터 도커 사용 예시까지 함께 살펴보겠습니다. 도커 설치하기 우선 도커부터 설치하겠습니다. brew install docker docker..