본문 바로가기

전체 글

(9)
[Next.js] Next 앱 도커 이미지 다이어트하기 node 기반의 앱이 항상 겪어야 하는 문제가 있다. 바로 node_modules 라는 짐을 지고 가야 한다는 것이다. Next.js 로 작성된 웹 페이지는 server side rendering 을 포함하기 때문에 React 처럼 static page 로 export 해서 가볍게 배포할 수가 없다. node_modules 의 기막힌 무거움을 해결하기 위해 pnpm 이나 yarn berry 같은 해결책이 나왔지만, docker image 로 빌드해서 배포하는 경우, 컨테이너 안에 node dependency 를 필연적으로 들고 있어야 해서 image 의 크기가 커지고 만다. Docker Image 의 크기가 커지는 것이 무슨 상관인가 싶지만, 배포 과정에서 push / pull 하는 데에도 시간이 오래 ..
[k8s] Kafka Connect 를 이용해서 MQTT 메세지를 Kafka Broker 로 Produce 하기 이전 게시글에서 EMQX 를 이용해서 MQTT Broker Cluster 를 설정하였다. 이번 게시글에서는 Kafka Cluster 를 Kubernetes 클러스터 위에 구성하고 MQTT 로 들어오는 메세지를 Kafka Cluster 로 Produce 되도록 설정해보자. Kafka Connect 에서 MQTT Connector 를 지원하는 방법은 굉장히 많은데, Confluent Platform 의 공식 MQTT Source Connector 는 Enterprise 버전 이상에서만 작동하고, Lenses.io 에서 제공하는 MQTT Source Connector 가 있긴 하지만, 이번 게시글에서는 Apache Camel 을 이용한 구현을 해 보겠다. [k8s] MQTT Broker Cluster 와 Ka..
[k8s] MQTT Broker Cluster 와 Kafka Cluster 를 이용한 Scalable 아키텍쳐 구성 IoT 를 위한 백엔드 아키텍쳐를 구성할 때에, MQTT 브로커는 IoT 디바이스로부터 오는 정보를 서버의 가장 앞에서 받아오는 역할을 한다. MQTT 는 굉장히 적은 전력과 리소스로 작동하는 통신 프로토콜로, 굉장히 많은 수의 디바이스로부터 오는 신호를 처리할 수 있도록 경량화되어 있다는 특징이 있다. Broker Cluster 를 구현할 수 있는 프레임워크에는 여러가지가 있는데, 유명한 Eclipse Mosquitto Jave 기반의 브로커인 HiveMQ 또다른 오픈 소스 브로커인 VerneMQ 그리고 EMQX 를 찾아볼 수 있다. 그 중, broker cluster 를 구성할 수 있는 솔루션을 찾는 와중, HiveMQ와 같이 많은 솔루션이 Clustering 을 위해서는 Enterprise 버전을 ..
[k8s] minikube 로 k8s 클러스터 실습하기 Kubernetes는 컨테이너 오케스트레이션 툴로, 가용성 있는 서비스를 운영하는 데에 적합한 기능을 가지고 있으며, 필자 역시도 직무상 운영하는 서비스에 Kubernetes 를 애용하고 있다. 컨테이너 기반 서비스 운영에 한번 맛을 들이니, Rolling Update, Versioning, 그리고 Scaling 등 유용한 기능이 많아, 계속 Kubernetes 를 사용하게 되었는데, 실제 Node 들을 구성해서 클러스터를 구축하기에는 너무 시간과 노력이 많이 소모되고, EKS 와 같은 클라우드 툴을 사용하자니 비용이 너무 많이 들어서, 여러가지 실습을 해볼 만한 플랫폼이 마뜩치 않았다. 이럴 때 minikube 를 사용하면 간편하게 local 에서 클러스터를 구성할 수 있어서 애용하고 있다. minik..
[Windows] NSIS 를 이용해서 Forms Application 배포하기 Windows 에서 C# 을 이용해서 GUI 애플리케이션을 만들어야 할 때, 디자인이 무겁지 않다면, Windows Forms Application 은 굉장히 좋은 옵션이라고 생각한다. Visual Studio 를 이용해서 Forms Application 을 만들면서 패키징을 하기 위해 NSIS 를 이용했는데, 필자가 구성한 방식을 정리해 보았다. Windows Forms Application 프로젝트 생성 먼저, Visual Studio 에서 프로젝트를 생성한다. 주어지는 옵션 중, Windows Forms Application 을 선택한다. 프로젝트 구성에서 프로젝트 이름은 편의상 WinFormAppForNSIS 라고 지었다. 모든 구성을 마치고, 프로젝트 생성이 완료되면, Forms designer..
[Windows] NSIS 를 이용해서 설치 파일 패키징하기 열심히 소프트웨어를 개발해도, 그 프로그램을 다른 사람이 사용할 수 있게 배포하지 않으면, 나 혼자 보고 만족하는 장식장 속의 진열물에 불과하다. 내가 개발한 소프트웨어를 배포할 때에, 사용자가 프로그램을 다운받아서 설치한 후 사용하는 일련의 과정이 복잡하지 않도록 잘 패키징하는 것은, 상용 프로그램에 있어서는 프로그램을 사용하는 유저 경험의 가장 첫 번째 관문인 만큼 굉장히 중요한 과정이라 할 수 있다. Mac 의 경우에는 .dmg 파일이나 .pkg 파일을 이용해서 설치 패키지를 제공하거나 App Store 에 출시할 수 있고, Windows 사용자의 경우에는 인스톨러 파일 (*.exe) 를 다운받아서 설치를 진행하는 과정이 가장 익숙할 것이다. Windows 배포를 위한 방식에는 여러 가지가 있는데,..
[C#] .NET 프레임워크로 윈도우에서 Bluetooth 사용하기 (2) 이전 포스트에서 C# Console Application 에서 BLE 를 사용할 수 있도록 설정하고, 주변의 디바이스를 쿼리하는 부분까지 다뤄보았다. 이번 포스트에서는 실제로 Device 의 characteristic 으로부터 데이터를 읽어오는 작업을 진행해보겠다. [C#] .NET 프레임워크로 윈도우에서 Bluetooth 사용하기 데스크탑에서 BLE 디바이스와 소통하는 앱을 제작해야 하는 태스크를 맡게 되어 Windows 플랫폼에서 구동하는 데스크탑 앱을 제작하기로 결정하였다. Cross-platform 으로 동작하는 bleak 이라는 패키지 dev-seb.tistory.com GATT 서버의 구조 원하는 BLE 디바이스를 검색했으면, 디바이스와 통신하기 위해서 두 가지의 개념을 사용한다. Servic..
[C#] .NET 프레임워크로 윈도우에서 Bluetooth 사용하기 데스크탑에서 BLE 디바이스와 소통하는 앱을 제작해야 하는 태스크를 맡게 되어 Windows 플랫폼에서 구동하는 데스크탑 앱을 제작하기로 결정하였다. Cross-platform 으로 동작하는 bleak 이라는 패키지도 있지만, python 으로 작성한 앱은 pyinstaller 와 같은 별도의 패키징 단계를 거치지 않는 이상 배포에 어려움이 있어서, Windows Native 한 환경에서 .NET 프레임워크 위에서 C# 으로 작성하여 개발을 진행하기로 결정했다. GitHub - hbldh/bleak: A cross platform Bluetooth Low Energy Client for Python using asyncio A cross platform Bluetooth Low Energy Client ..