자고 일어나니 기여하던 오픈소스가 대박나있음
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..
[Gatling] Gatling 성능 부하 테스트
2022. 11. 11. 07:59
Open Source/Testing Framework
여러 개발 방법론에서는 개발 중 테스트 코드를 작성하는 것을 권고합니다. 저는 그 방법론을 충실히 따라 기능 단위 테스트 코드를 열심히 작성하고 있습니다. 하지만 프로덕션 환경에 이 코드를 올렸을 때 정상적으로 동작할지 항상 걱정이 들었습니다 . "내가 생각한 것보다 더 많은 요청이 들어오면 애플리케이션은 어떻게 동작할까?" 등 다양한 부하 상황에서 애플리케이션이 어떻게 동작하는지 궁금했습니다. 이 궁금증을 해결하기 위해 Gatling을 활용했습니다. Gatling 이란 Gatling은 오픈소스 부하 테스트 소프트웨어입니다. 개발 pipeline과 지속적으로 통합시킬 수 있는 소프트웨어이기 때문에 개발의 모든 단계에서 다양한 방법으로 테스트가 가능합니다. Gatling은 maven을 통해 실행시킬 수 있..