동시성 제어, 당신은 어떻게 하실건가요? :: 격리레벨, 비관적 락 멈춰
·
개발 공부 일기장/Tips
개요오늘은 동시성 제어에 대한 글을 가져왔다, 요즘 부쩍 동시성 문제를 많이 겪고 있고 많은 지식을 얻고 있는 시기이다.작년 2월에 처음으로 동시성 제어에 대해 다뤘다, 당시에는 비관적 / 낙관적 락 또는 트랜젝션 격리 레벨을 알아봤다.하지만 실무에서 점점 다방면을 고려하다보니 전혀 다른 시각을 가지고 이 문제에 대해서 바라보게 되었다.동시성 제어의 본질동시성 제어란 무엇인가? 보통 동시성 문제라고 하면 멀티스레드 환경을 먼저 떠올린다, 하지만 그건 너무 좁은 범위에서의 생각이다.싱글스레드에서도 동시성 문제는 일어날 수 있다, 이벤트루프는 싱글스레드인데 멀티스레드 환경과 같은 동시성 문제를 겪을 수 있다. 동시성 문제는 공유된 자원에 여러 요청들이 동시에 접근할 때 생기게 되는 문제이다,특히 외부 자원에..
쿼리에 하면 안되는 첫번째 레슨, 복합조건에 OR 쓰고 인덱스 바라지 않기
·
개발 공부 일기장/DBMS Develop
개요ML 테스트를 해야 하는데 최신 데이터가 필요해져서 오랜만에 stage에 prod 데이터를 동기화 했다.그런데 갑자기 stage의 slow query 알람이 5분마다 뻐꾸기마냥 울려대기 시작했다.. (prod에는 설정 안해놨다) 이 코드를 작성한게 작년인데 1년동안 또 많이 공부하고 성장해서 눈에 보이지 않던 부분들이 보이기 시작했다.어떤게 문제였고 왜 그런지는 이제부터 알아보도록 하겠다문제 원인 파악일단 한눈에 알 수 있었던 부분은 5분마다 주기적으로 발생하고 있었단 것이다, 그려면 분명 스케줄러다.결국 문제가 되었던 아래와 같은 코드를 발견하게 되었다@Query(""" SELECT d FROM Discover d INNER JOIN FETCH d.requestUser ru..
SpringBoot에서 수많은 AI 프롬프트 우아하게 관리하기
·
개발 공부 일기장/Java Develop
개요대 AI 시대.. 시대의 흐름에 맞춰 백엔드 코드에도 AI 관련 기능들이 많이 추가되고 있다.그리고 약 1년 정도 AI 기능들의 퀄리티를 좌우하는건 무엇보다 프롬프트인것을 알게 되었다. 얼마나 정교하게 자세하고 내가 원하고 전달하고 싶은 가치를 잘 녹여냈느냐가 기능의 퀄리티를 결정한다.그러다보면 프롬프트는 길어지고 복잡해지기 마련이다, 그런데 이 프롬프트.. 코드에 문자열로 저장하기엔 너무 별로였다.프롬프트 우아하기 관리하기프롬프트를 우아하게 관리하기 위해선 두가지 포인트를 고민해보면 된다. 1. 프롬프트를 어디에 어떤 형태로 저장할 것인가?2. 다양한 AI 피쳐들과 다양한 AI 모델들을 어떻게 자유롭게 설정하고 활용할것인가? 근데 생각해보니 2번은 단순 프롬프트와는 연관이 없는것 같아서 SRP 원칙..
자바는 pass by value일까? pass by reference일까
·
개발 공부 일기장/Java Develop
개요개발에 대한 글은 정말 오랜만에 적는 것 같다, 이전 글에서도 언급한 대로 다시 초심자의 마음으로 돌아가서 공부를 해보려고 한다.나는 정말 많은 분야에 대해 매우 얕게 알고 있지만 내 본 진영인 JVM에 대해서는 더 깊게 공부하고 싶은 마음이 들어서 이 글도 적는다.자바는 pass by value이다아마 이 글을 읽으시는 분들이라면 둘의 차이는 기본적으로 알고 있을거라고 생각한다, 만약 모른다면 AI에게 간단하게 물어보고 다시 읽자. 사람들과 말해보면 다양한 의견이 나온다, '원시 타입인지 참조 타입인지에 따라 다르다', '모두 pass by reference' 등..원시 자료형의 경우아마 원시 자료형에 대한 정답은 다들 이해하기 쉽고 명확할 것 이라고 생각한다, 아래 코드 하나로 설명이 된다.pub..
블로그 방향성에 대한 정리
·
개발 공부 일기장/생각 정리
개요25년의 첫 글이다, 사실 25년부터 velog로 블로그 이사를 하였고 대부분 글을 velog에 적었다.나는 쉬는 시간에 velog의 피드를 보는 것을 정말 좋아한다, 흥미로운 글을 발견할 수 있기 때문이다.그래서 내 글도 언젠간 나처럼 기술 블로그를 보는 걸 좋아하는 사람이 velog 피드에서 내 글을 봤으면 좋겠어서 이사를 했다.하지만 반년 만에 다시 돌아오게 되었다, 왜냐하면 티스토리는 내 고등학교 시절부터 작성했고, 그 과거를 무시할 수 없기 때문이었다.블로그의 방향성어느 순간부터 나는 블로그에 xx 하는 법 같은 글을 쓰지 않으려고 하였다, 왜냐하면 그런 글들은 너무 많고 매력적으로 보이지 않았다. 면접관 입장에서 이력서를 볼 때도 xx 하는 법보단 ~~해본 썰 푼다, 혹은 ~~에서 ~~해보..
2024년, 4년차? 5년차? 개발자의 총 결산 회고록
·
개발 공부 일기장/생각 정리
개요올해도 어김없이 2024년 회고록으로 돌아왔다, 평소보다 좀 이른 시기에 쓰는것 같은데 아마도 연말은 쭉 바쁘고 요즘에 생각이 너무 많아져서 글로 정리할겸 시간내서 얼른 써보려고 한다. 매년 같은 형식이지만 이렇게 매년 꾸준히 성장하는 나 자신을 보는것이 재밌다.사람 박종하로써 나의 2024년은?개발자가 아닌 한 청춘을 보내는 사람으로써 2024년을 보내며 받았던 인상 깊었던 느낌들에 대해서 정리해보려고 한다.개발자로써 성장하게 된 부분은 글의 아래부분에 적도록 하겠다.다양한 경험들로 가득 찼던 감사한 1년올해는 정말 감사한 1년이였다, 작년 연말 회고에는 '정말 여러일들로 힘들었던 한해' 였는데 올해 회고록에는 이렇게 당당하게 감사한 1년을 보냈다는 말을 쓰게 되니 괜히 뭉클하다. 작년 12월에 십..
'스타트업 다운것' 이라는 편견 부수기, 서비스 기술 스택 전환기
·
개발 공부 일기장/생각 정리
개요스타트업에 합류한 후 테크리드로써 최종 결정권자가 되어 많은 선택에 대한 고민을 했는데 그럴때마다 나의 머리속에 '스타트업 다운가?' 라는 필터가 하나 자리잡아 있었다. 스타트업은 큰 기업들이 못 하는것을 해내는 곳이다, 빠른 의사결정과 개발, 짧은 배포 주기등 결국 속도라는 장점을 가지는 조직이다. 그래서 스타트업이면 기술 스택을 최대한 단순하고 기술적으로는 안티 패턴 일지라도 빠른 개발을 위해 퀄리티를 포기해야 하는 그런 편견이 있는것 같다, 하지만 결국 편견이고 본질이 아니라는것을 깨닫았다, 스타트업에서도 모범사례를 추구해야한다. 하지만 내가 말하는것은 단순한 기술적 사치와 빅테크에 버금가는 기술 퀄리티가 아니다. 나 또한 아직 PMF를 찾지 못한 서비스가 미래를 내다보고 미리 대용량 트래픽을 ..
레거시에서 어떻게 탑을 쌓아올릴 것인가
·
개발 공부 일기장/생각 정리
개요한달만에 글을 쓴다, 대규모 리브랜딩 후 배포를 앞두고 있어서 사실 블로그 뿐만 아니라 축구도 못하고 있다..하지만 왜 글을 쓰냐, 그건 스터디를 해야하기 때문이지,  스타트업에 리드 개발자로 합류하면서 기존의 레거시에서 발생하는 문제점들을 인지하고 스타트업 특유의 빠른 생산성에 영향을 주지 않으면서 기존의 레거시를 개선하고 있는 경험을 공유하기 위해서이다. 모르겠고 다음주 월요일 새벽배포인데 교회 기도하면서 배포할 예정이다.. 리팩토링의 종류처음에는 정말 많은 고민을 했다, 리팩토링의 중요성을 인지하고 있었지만 당장의 기능 개발과 버그 수정 때문에 손을 못 대고 있던 상황이였다. 하지만 나는 수많은 컨퍼런스와 기술 블로그 덕후로 알고 있었다, 생산성에 영향을 주지 않은 리팩토링 방법을 리팩토링에는 ..