[Kotlin + SpringBoot] @Transactional 안에서 외부 API 호출 시 발생하는 문제
·
Java & Kotlin/JPA
🧐 들어가기전@Componentclass ChatFacade( private val threadService: ThreadService, private val chatService: ChatService, private val openAiService: OpenAiService,) { @Transactional fun handleChat( userId: Long, question: String, isStreaming: Boolean?, model: String? ): Chat { val thread = threadService.upsertThread(userId) val previousChats ..
AI 시대에서 개발자로서 지녀야 할 마인드 고찰
·
Writing
#1 점점 바뀌어 가는 분위기, 아니 이미 바뀌어버린 분위기생성형 AI의 등장으로 대체되고 있는 부분들이 많아지고, 그에 따라 급격한 변화가 계속해서 일어나고 있다.특히 아무래도 가장 강점이 두드러지는 부분은 텍스트를 생성하는 부분이다. 이러한 텍스트 생성하는 능력이 응용되고, 다양한 분야에 적용되면서 최근에는 이미지는 물론이고 영상까지 손쉽게 뚝딱 만들어버린다. 아무래도 이런 상황에서 코드를 작성하는 것이 대체되는 것은 너무나도 당연한 흐름이었다. 그래서 요즘 개발자들 사이에서 가장 뜨겁게 달구는 주제는 'AI에게 어디까지 개발을 맡겨야 하는가', 'AI로 인해 일자리가 사라지는 것 같다', '앞으로 어떤 역량에 더 집중해야 하는가' 등등 AI로 인한 입지가 좁아져 방황하는 주제들이 이야기의 주를 이루..
[Redis] 분산락을 깊게 다뤄보자. (RedLock, Redisson)
·
Redis
🧐 들어가기전Redis에 대한 개념을 되짚어보다가, 분산락을 다시 한 번 살펴보게 되었고 문득 다음과 같은 궁금증이 생기게 되었다. "분산락은 어떤 구조로 이루어져있지? 우리가 흔하게 쓰는 Redisson의 내부구조는 어떻게 생겼지?" "분산락은 비관락과 어떤 차이점을 지니고 있고 어떤 장단점을 취하고 있지? 주의해야할 부분이 뭘까?" "분산락은 내부적으로 스핀락 형태를 취하고 있는가? 아니면 뮤텍스의 형태를 취하고 있는가? 아니면 세마포어?" 이 고민들을 해결하기 위해 해당 포스팅에서는 레디스 분산락을 깊게 다뤄볼 예정이다.🔸 1. Redis 분산락의 기본 구조분산 시스템에서는 하나의 자원을 여러 서버 또는 프로세스가 동시에 접근하려고 할 때 경쟁 조건(race condition) 이 발생할 수 있..
[EC2] EC2에서 OpenVPN Client 설치해서 프라이빗 클라우드 호스팅하기 (ssh 연결 끊김 현상)
·
Infra
🧐 들어가기전❓ 프라이빗 클라우드 자원 활용 및 외부 접근성 확보에 대한 고민학교에서 이번에 Cloud 관련 사업을 하면서 실습 환경을 제공해주기 위해 학생마다 프라이빗 클라우드를 사용할 수 있는 기회를 얻었고, 생각보다 쓸 수 있는 자원이 넉넉하였다. 따라서 해당 머신에서는 평소에 메모리를 많이 잡아먹어 하지 못하였던 실습들을 할 수 있는 기회를 얻어 너무너무 좋았다.(오픈스택, elk 등등..)하지만 프라이빗 클라우드 환경의 특성상 각 인스턴스에 프라이빗 IP만 발급되는 구조적인 한계가 있었다. 이로 인해 해당 인스턴스에 접근하려면 VPN을 통해 사설 네트워크 망으로 접속하는 것이 필수적이었고, 이는 서비스 호스팅이나 외부와의 직접적인 공유 측면에서 아쉬웠다.최근에 프로젝트를 진행하면서 이 빵빵한 ..
[Kotlin + SpringBoot] Flowise + LLM 에러분석 자동화 적용기
·
Java & Kotlin
🧐 들어가기전개발과 운영의 경계에서 늘 서비스 안정성에 대한 고민은 계속됐다. 특히 예측 불가능한 에러가 발생했을 때, 빠른 인지와 정확한 원인 분석은 장애 시간을 최소화하고 사용자 경험을 보호하는 데 핵심적인 역할을 수행한다. 하지만 매번 발생하는 에러 로그를 일일이 확인하고 그 방대한 데이터 속에서 유의미한 패턴과 근본 원인을 찾아내는 일은 시간과 노력이 소모되는 고된 작업이었다.이 과정 속에서 조금 더 생산성과 효율성을 높이고자 하는 인프라 구축에 대한 필요성을 느꼈다. 그러던 중 최근 토스(Toss) 테크 글을 보게 됐고, "에러를 누군가가 분석해주고 결과와 해결 방법만 제시해서 알림만 오도록 구현할 수 있다면?"이라는 상상이 현실로 실현되는 자동화 구축 사례를 접했다. 해당 글을 참고하며, 우..
[CI/CD] blue/green 무중단 배포 (Docker, Github Actions, Nginx)
·
Infra/CI-CD
🧐 들어가기전 [CI/CD] Docker와 Github Actions으로 CI/CD 파이프라인 구축하기🧐 들어가기전최근에 예전에 진행했던 프로젝트를 코프링(Kotlin + Spring) 기반으로 마이그레이션하는 작업을 시작하게 되었다. 당시에는 코드가 수정될 때마다 로컬에서 빌드한 파일을 서버에jhzlo.tistory.com기존에 Docker를 활용해 CI/CD 자동화 파이프라인을 구축했을 때는 개발과 배포가 한층 편리해졌다고 느꼈다. 자동화된 빌드와 배포 과정 덕분에 일일이 수동으로 작업하던 번거로움이 줄었고, 팀원들과의 협업도 수월해졌다. 하지만 실제 프로젝트에 적용해보니 불편한 점도 많았다. 특히 MVP가 어느 정도 완성된 후 실제 서비스를 배포했을 때, 생각보다 다양한 버그들이 눈에 띄었다. ..
J_hzlo
J_hzlo