Spring Actuator란?DB 연결 및 애플리케이션의 성능 상태를 모니터링할 수 있는 기능이다. 그라파나 등이랑도 함께 사용할 수 있다고 한다.주로 health check 용도의 endpoint로 많이 사용된다. 사용 방법아래의 의존성만 추가해주면 /actuator로 접속하면 모니터링 된 내용들을 볼 수 있다.# build.gradledependencies { implementation 'org.springframework.boot:spring-boot-starter-actuator'}/actuator/health에 접속하면 아래와 같이 “UP”으로 서버가 살아있음을 나타내고 있는데, “components”들을 보면 어떤 것들을 헬스 체크를 하고 최종적으로 해당 서버가 살아있음을 나타내는지 보..
컨테이너 환경을 바꾸어 보았다.람다 -> ECS + Fargate이미지: DockerHub 이용하기 알고보니 GPU를 이용하려면 EC2를 이용해야 하는 것이었고,GPU를 사용하는 경우 엄청 비싸기 때문에 그냥 Fargate로 사용해보기로 했다. 처음에는 2vCPU + 16GB를 줬었는데, 배포가 잘 되지 않았다. 혹시나 하고 4vCPU + 30GB를 배정해줬는데도 불구하고 배포 되면 죽고, 배포 되면 죽고의 반복이었다. 그렇다고 해서 컨테이너 자체의 로그를 볼 수 있는 부분인 CloudWatch 내 로그 이벤트에 '실패'가 뜨는 것도 없었다.Ollama 서버용 컨테이너 자체는 잘 동작하고 있는 것이다. 아래의 여러가지 시도를 해봤는데 되지 않았다.CPU 및 메모리 재설정상태 확인 경로 '/'로 변경해보기..
docs 바로가기테스트 코드를 작성하는데, 테스트에 필요한 데이터들을 일일히 넣어줘야 해서 이 부분을 어떻게 편리하게 할 수 있을까 찾아보다가 네이버에서 만든 오픈소스인 Fixture Monkey라는 것을 알게 되었습니다.Fixture Monkey는 제멋대로인 원숭이여서 아무 값이나 만들어서 쥐어줍니다.09:51:28.111 [main] INFO c.g.d.d.s.BrowseDiaryServiceTest - 뗀ᢕ葁ᥒ밵ꛓ槽鰘˧꤭ᢢ⣋킨ᬤ舝᎖ꆤ矨빻珿盅䔮돧ꭢ輑鲱㾏늌⾷嬬쮋헖ⅉ꼐솓魜벷쓯佼ῲ쇼鱯쏮꜉䝤逾쏑Ŕ㣪ㄲ鷙坪▊憵諜㗑게펳焌郡ᘚ叜槨第錙쒳➐❽铿鼡㤯䣾咱艘ኂ쩡뺔▊灅፦䚙ﭲ귑맅巺쾄娣扟쮒獵ᆈ橊ᥒພꠟ崐ὅ흐癦ವ傎み༚픴脟짻卝䐆罯槤晪溘頣㢾Ȫ뜓恕鉫ḏႺ㨥⭀倕ꃖ墶鿻匶䄘鈒〷豚䕾ݹ䔄བ煐覎낹Ȭ䡚薄낟-肽뗛玎넉㥿쩯椥ꏻㆋ⪃㷇垅뭩볓䏬㊥○㯑..
( 추가 )Lamda의 이미지로 만드는 것은 용량이 크고 실행시간이 길어 안 될 것이라 판단,GPU를 사용할 수 있는 ECS + Fargate를 사용해보기로 했습니다. (사용 예정)후에 구축하게 된다면 구축기로 다시 찾아오겠습니다. 기존에 홈서버에 구축 되어있던 ollama-github-code-review-bot을 구동할 때 ollama가 구동되면서 홈서버(미니PC)가 매우 뜨거워져서 따로 서버가 필요할 것 같다고 생각했다. Lambda로 동작 가능하다면 거의 무료의 가격으로 만들 수 있을 것 같아 쉽게 보고 도전했으나...Ollama를 사용했을 때 아래와 같은 부분이 필요하다.Ollama가 구동 될 서버가 필요함해당 서버로 POST 요청을 보내서 AI에게 지시1번 서버, 2번 서버 이렇게 두 개가..
1. 배경프로젝트를 진행하는 도중 Argo CD의 결과를 모니터링할 수 있도록 SNS로 보낼 수 있도록 만들어야 했는데, 직장에서 사용하는 해당 프로젝트 특성상 Slack으로 알람을 주기로 했다.2. 도입 순서1. Argo CD 파드 만들기argocd의 공식 문서를 참고 하여 만들게 된다면 자동으로 리소스들이 생성되는 것을 볼 수 있다.kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml그리고 외부에서 접속할 수 있도록 설정을 해주어야 하는데, 이 경우 AWS 로드 밸런서를 사용하기로 했다. argocd를 설치하면 기본적으로 argocd-server 서비스는 Clus..
진행 중인 프로젝트에 LLM을 이용한 코드 리뷰봇을 만들기 위해 프롬프트 엔지니어링이 필요 해서 찾아본 책이다. 기본적인 프롬프트 엔지니어링 12기법에 대해 알 수 있었고, 각 기법마다 제공되는 프롬프트의 예시들이 있어 어떻게 적용하면 될지 참고 할 수 있어 좋았다. 문제 풀이용 GPT에 대한 결과도 다루고 있어, 어떤 프롬프트를 써야 저런 결과가 나올지 고민 해 볼 수 있어 유용했다. 그렇기 때문에 프롬프트 엔지니어링에 관심이 있는 사람이라면 가볍고 빠르게 습득할 수 있어 편하게 읽을 수 있는 책이다. 해당 책을 읽고 프롬프트를 고민 해보았고, GPT에게 적용해 본 결과는 다음과 같다.(실제로는 ollama3에 적용할 예정이라 결과 값은 좀 다를 것이다.)
처음에 랜덤 값을 만드는 방법으로 Random 클래스와 함께 seed 값으로 시스템의 현재 시간을 사용하였습니다.private int makeRewardPoint() { long seed = System.currentTimeMillis(); Random random = new Random(seed); return random.nextInt(10) + 1;} 하지만 프로젝트를 리팩토링하면서 고민해보게 된 2가지로 인해 알아보다가 ThreadLocalRandom클래스로 변경하게 되었습니다.메서드가 동작할 때마다 새로운 Random 클래스를 재생성 해도 괜찮은가?동일한 시간에 여러 개의 요청이 동시에 들어온다면?물론, '잔디일기'의 서비스의 경우 일기를 작성 했을 때 랜덤 값으로 포인트가 적립..
사건의 발단진행 중이던 프로젝트의 브랜치 이름들이 올바르게 생성되어 있지 않아서 수정하려고 했다.하지만 모든 브랜치들이 수정되고 삭제되는 과정으로인해 로컬에 있던 브랜치와 원격 브랜치들이 맞지 않았다.결국 로컬에 있는 코드를 삭제하고 다시 clone을 하는 과정을 진행했다. 하지만 mac book을 오랜만에 켜서 그런진 모르겠지만... Intelij에서 GitHub 연동이 되지 않아 난감했다.이러면 안됐지만 ..!그냥 Fork도 다시 해보자는 생각에 레포지토리를 삭제 해버렸다. 그런데.....삭제하고 생각해보니 왜 레포지토리 앞에 내 이름이 아닌 Organization이 들어있지? 라는 생각이 슥 스쳤다.아 큰일 났다. X 됐다. 이미 일은 저질러진 것이었음을...이때 백엔드 팀 회의를 하면서 작업하고 ..