분류 전체보기(12)
-
OCPP-J 1.6을 Netty WebSocket으로 구현하기 (1)
Netty WebSocket을 활용해 OCPP-J 1.6을 구현 해보고자 한다. https://openchargealliance.org/my-oca/ocpp/ News - Open Charge AllianceThu 20 Mar 2025 OCPP 2.Lite application note: “OCPP for Resource-Constrained Devices”openchargealliance.org 위 사이트에서 기본적인 통신 프로토콜과 프로세스를 알 수 있다.우리는 OCPP 1.6버전을 구현 해야하기 때문에, OCPP 1.6 (all files & errata)를 클릭해 문서를 다운로드 한다. 평소에 MyBatis를 사용했지만, 이번에는 JPA를 통해 구성 해보고자 한다. https://github.co..
2025.04.29 -
Pulumi로 인프라 구축하기 (1)
요즘은 인프라를 Infrastructure as Code(IaC) 도구를 많이 사용하고 있다.Terraform 같은 도구도 있는데, 회사에서 요즘 Pulumi 괜찮다더라. 이걸로 IaC 코드를 짜고 공부를 좀 해보는게 어떻겠냐는 소리를 조금 들었다. 회사에서도 도움이 될 것 같고, 좋은 경험이 될 것 같아 조금 공부하고 코드 작성 해보겠다고 했다. Pulumi의 특징다양한 클라우드 플랫폼을 지원한다. AWS, Azure, Google Cloud, Kubernetes 등 여러 클라우드 플랫폼을 지원하고 있다. 많은 사람들이 사용하는 프로그래밍 언어로 인프라 코드를 작성할 수 있다.현재는 Node.js(JavaScript, TypeScript), Python, Go, .Net(C#, F#, VB), Jav..
2025.04.28 -
NCP Clova OCR 특화모델을 활용해 사업자 등록증 데이터 추출하기
어제는 Template OCR을 이용했으나, 회사 NCP 계정을 통해 특화 모델을 신청하니 승인이 되어 NCP Clova OCR 특화 모델로 데이터를 구해보려고 한다.어제는 대략 95%의 정확도를 보였는데, 사업자 등록증 특화 모델은 어느정도로 추출이 가능할지 확인해보자. 도메인 생성사진과 같이 특화 모델 승인이후에 사진과 같이 도메인을 생성한다. 정상적으로 도메인이 생성되었는지 확인한다. API Gateway를 신청하고, API Gateway 연동을 클릭한다. API Gateway 연동자동 연동한 후 Secret Key를 생성한다. API 호출 테스트 (Postman)https://api.ncloud-docs.com/docs/ai-application-service-ocr-ocrdocumentocr-b..
2025.04.23 -
NCP Clova OCR을 활용해 사업자 등록증 데이터 추출하기
회사에서 자사 전자계약 서비스와 관련해 사업자 등록증을 OCR로 받아 처리하는 방식을 말해서 검증 테스트를 진행하고자 한다.사람 여러명이여도 사업자 등록증을 직접 입력해 타이핑 하는 것 보다 빠르니, 이런 방식을 선택한 것 같다. 기본적으로 Naver Cloud 계정이 필요해서 가입한 이후 콘솔에 접속해보자.이후 Services에 들어가 Clova OCR을 입력 해 들어간다. 이후 서비스를 신청한 후 도메인을 생성한다.간단하게 테스트 용으로만 작성했다.설명에도 나와있지만 Free를 제외한 Basic, Advanced는 API를 호출하지 않아도 기본 요금이 있다. 반드시 주의하자. 특화 모델을 사용하면 조금 더 정확하게 정보를 가져올 수 있지만, 이 글을 작성하는 시점에 신청하였으나 승인 대기 상태여서 내..
2025.04.22 -
Netty의 EventLoop 특성 이해하기
오늘은 Netty의 EventLoop에 대해 이해를 높이고자 조금 찾아보고 공부한 내용을 정리한다. Client Codepackage com.example.demo.netty;import com.example.demo.DemoApplication;import com.example.demo.netty.handler.ClientHandler;import io.netty.bootstrap.Bootstrap;import io.netty.channel.ChannelFuture;import io.netty.channel.ChannelInitializer;import io.netty.channel.ChannelOption;import io.netty.channel.EventLoopGroup;import io.nett..
2025.04.21 -
Spring MVC와 Spring Webflux 성능 비교
내가 여태까지 자연스럽게 써온 코드는 Spring MVC를 기반으로 만들었었다.SI 회사에서 근무하다보니 자연스러운 흐름이였고, 굳이 코드를 변경해 볼 생각도 하진 못했었다. 최근 Netty로 TCP Client와 WebSocket Client를 만들면서, Spring MVC는 왜 Non-blocking을 지원하지 않을까, 이와 관련한 대체제가 있진 않을까 하고 찾아봤었다. (사실 Webflux를 이름만 들어보긴 했는데, 적용해 본 적이 없었기 때문에...) 1월 즈음에 JMeter를 활용해 적정 부하, 임계 부하, 스트레스 테스트 등 성능 테스트를 진행하면서 TPS가 급격하게 상승하면 일부 API 요청은 응답을 받지 못하는 현상도 있었다. (대략 160 TPS 즈음 근접했을 때, 1~2건씩 서버에서 처..
2025.04.20