분류 전체보기
-
🚐 Kafka 메시지 발행 최적화: 동기 방식에서 코루틴까지의 여정🧑🏻💻 프로젝트 2025. 3. 24. 17:45
⚠️ 문제 상황트랜잭션 아웃박스 패턴을 사용하여 outbox 테이블에서 배치 단위로 데이터를 가져와 Kafka로 메시지를 발행하는 과정에서 메시지가 실제로 Kafka에 정상적으로 전달되었는지 확인하는 기능이 필요했습니다. 🤔 초기 접근법 - 동기적 처리 KafkaTemplate.send().get()Kafka에 메시지가 정상적으로 전송되었는지를 확인하기 위해 get() 메서드를 사용했습니다.val successfulIds = mutableListOf()pendingMessages.forEach { message -> try { val topic = kafkaProperties.getTopicForOutboxType(message.outboxType) kafkaTempla..
-
CLOVA Studio API 이용하여 답변 받기☁️ infra/Naver Cloud Platform 2025. 3. 7. 13:33
이번 502 포텐데이(비사이드 x 네이버 클라우드) 해커톤에 참여해 CLOVA Studio를 이용한 경험을 작성하고자 한다.http://bside.best/projects/detail/P250219095755 📌 CLOVA Studio 플레이그라운드Naver Cloud 콘솔 > CLOVA Studio 서비스 접속 > 플레이그라운드 왼쪽의 파라미터들을 통해서 하고자하는 기능에 따라 커스텀을 진행하면 된다.해당 화면에 대한 설명은 해당 링크를 통해서 확인하면 된다. ✏️ 프롬포트 작성 만들 서비스의 이름과 페르소나를 부여해주어야 한다.모델에게 성격, 캐릭터 등을 부여하는 작업을 프롬포트 엔지니어링이라고 한다.CLOVA Studio 에서는 프롬포트를 시스템 지시문이라는 이름으로 사용꿈을 해몽하는 모델을 ..
-
NCP를 이용한 프로젝트 배포 - (3) 도메인 및 SSL 적용☁️ infra/Naver Cloud Platform 2025. 2. 28. 01:09
Naver Cloud Platform은 HTTPS/기본 도메인을 제공하지 않아 도메인 지정하고 SSL 적용해보기로 했다. 1️⃣ 개인 도메인 구매NCP Global DNS를 사용하기 위해서는 개인 도메인이 필요하다.개인 도메인은 호스팅 사이트에서 구매할 수 있다. (가비아 에서 구매) 2️⃣ NCP Global DNS에 구매한 도메인 등록NCP 콘솔 > Networking > Global DNS > 도메인 추가 - 구매한 도메인 추가 도메인이 등록이 되면 Global DNS에서 제공하는 네임 서버를 확인할 수 있다.가비아는 자체적으로 DNS 서버를 운영하고 있어 구매한 도메인은 자동으로 가비아의 도메인 서버로 등록된다.따라서, Global DNS에 도메인 등록이 완료되었으면 가비아의 도메인 통합 관리 ..
-
NCP를 이용한 프로젝트 배포 - (2) 배포☁️ infra/Naver Cloud Platform 2025. 2. 28. 00:54
Spring Boot로 개발한 애플리케이션을 Docker Hub에 올리고 이를 NCP 서버에서 자동으로 pull 받아 실행하도록 설정하는 과정또한, GitHub Actions을 이용해 main 브랜치에 코드가 push될 때 자동으로 배포가 이루어지도록 설정 ⤴️ Github ActionsGitHub Actions을 이용하여 CI/CD 파이프라인을 구축하는 설정입니다.name: github-actionson: push: branches: [ "develop", "main" ] pull_request: branches: [ "develop", "main" ]jobs: build: name: build runs-on: ubuntu-latest steps: - uses:..
-
NCP를 이용한 프로젝트 배포 - (1) 서버☁️ infra/Naver Cloud Platform 2025. 2. 28. 00:41
이번에 비사이드 X 네이버 클라우드 502 AI 포텐데이 프로젝트를 진행하면서GithubActions을 이용한 CI/CD 파이프라인으로 자동화하여 NCP(Naver Cloud Platform)이용해 서버를 배포하는 과정을 정리하려고 합니다. 🎯 목표NCP 서버 활용docker 기반 애플리케이션 배포github actions을 활용한 CI/CD 파이프라인 구성 ⚙️ VPC / 서브넷 설정📍 VPC 생성 IP 주소 범위는 사설 IP주소의 범위를 의미하며 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 중에 선택해서 cidr를 조정 📍 서브넷 생성 Internet Gateway 전용 여부에서 "Y"를 선택하면 public이고 "N"를 선택하면 private 🚀 NCP ..
-
👾 MockK와 Mockito🔖 Kotlin 2025. 1. 9. 17:16
📌 Mockito@Testfun `mockito 테스트 예제`() { // given val username = "beomsic" val user = User(username) given(userRepository.save(any())).willReturn(user) // when userService.save(user) // then then(userRepository).should().save(any())}Mockito를 사용하면 BDDMockito를 통해서 BDD 형태로 작성할 수 있다.when은 given으로 verify는 then으로 사용 📌 MockK코틀린에서 테스트 시 Mock 객체를 생성하는 것을 도와주는 라이브러리@Testfun `mockk ..
-
😎 Infix Function🔖 Kotlin 2024. 12. 30. 15:43
🤔 Infix Function코틀린은 가독성 좋은 코드를 위한 언어로 이를 통해 코드를 더 쉽게 유지 관리할 수 있다.infix 표기법도 이런 기능 중 하나이다.💡Infix 표기법코틀린은 마침표와 괄호를 사용하지 않고도 일부 함수를 호출할 수 있게 해주며 이를 Infix 메서드라고 한다. 🎯 Infix Function의 목표 가독성 향상 Infix 함수는 코드를 자연어처럼 보이게 해 가독성을 향상 도메인별 언어(DSL)이나 사람이 읽을 수 있는 형식으로 작업을 표현할때 유용보일러 플레이트 줄이기Infix 표기법을 사용해 보일러 플레이트 코드의 양을 줄일 수 있다. 📌 Standard library infix function to()Pair 인스턴스 생성and(), or(), xor()두 피연..
-
널 안정성🔖 Kotlin 2024. 12. 29. 22:09
🤔 Kotlin에서 Null 안정성을 보장하는 이유Java의 NPE(null pointer exception) 문제자바는 모든 객체가 기본적으로 null을 허용해, 개발자가 별도로 null 체크를 해주어야 한다.따라서 NPE이 발생하는 코드가 흔하며 이는 자바 개발자가 가장 많이 마주치는 오류중 하나이다.이를 방지하기 위해 많은 양의 보일러플레이트 코드(명시적 null 체크)가 필요Kotlin 설계 철학코틀린은 안전하고 간결한 코드 작성을 목표로 설계null 안정성을 언어차원에서 지원해 개발자의 실수를 방지하고 코드의 신뢰성을 높인다.개발자가 명시적으로 null 가능성을 처리해 런타임 오류를 최소화생산성과 가독성 향상null 체크를 자동화하고 코드 가독성을 높임으로써 개발 생산성 향상명시적인 nulla..