Peacock 프로젝트 노트
·
프로젝트
날짜작업링크2024년 9월 17일응답 헤더에 서버 정보가 노출되는 보안 문제 해결-2024년 9월 18일- ArgoCD helm chart로 이관- NGINX에서 Traefik으로 이관- Peacock API JIB 적용500 에러 해결 참고 자료https://www.gomgomshrimp.com/posts/argocd/github-integration
Redisson 분산락
·
프로젝트/개발
들어가며 학부 시절 마인크래프트 서버 포럼을 개발해 보면서 각 서버별 인원수 체크를 위한 검사를 위해 크론잡을 수행한 경험이 있다. 당시 개발 경험을 위해 클러스터링 환경으로 구성했는데, 문제는 배치가 수행되면서 모든 서버가 일괄적으로 크론이 실행되는 문제가 있었다. 너무 당연하지만, 당시 하나의 서버만 구성해 운영하는 것을 생각하던 버릇이 있던 나에겐 꽤 신선한 충격이었다. 당시엔 레디스의 클러스터링 환경 분산락 구현체인 RedLock으로 문제를 해결했는데, 조금 많이 과하기도 하고, RedLock 알고리즘의 경우 각 레디스가 위치한 서버 간에 시간 동기화와 락 획득에 실패한 경우 실패한 클라이언트는 획득한 부분 락을 모두 푸는 작업을 요청하는 등 매우 특별한 상황에서 문제를 해결하는 알고리듬인 것을 ..
동시성 이슈 없는 조회수⏳ 기능 개발 고민
·
프로젝트/개발
조회수는 많은 서비스에서 이용되며 사용자의 콘텐츠 선택에 많은 도움을 주는 요소 중 하나이다. 하지만 단순한 기능이라도 복잡한 요구사항이 추가된다면 재미난 기능을 만들 수 있다. 조회 시 증가 구현 가장 간단하게 구현하는 방법은 게시글 상세 조회 시 대상 데이터에 조회수를 의미하는 컬럼 데이터를 1 증가하는 것이다. 예를 JPA를 사용한다면 다음과 같이 구현할 수 있다. final Post post = repository.findById(1L); post.increaseViewCount(); 문제 트랜잭션이 종료되면 변경 감지에 의해 변경 내용이 DB에 반영되는 구조로 흔히 구현할 수 있다. 하지만 조회수가 서비스에 중요한 요소라 누락이 되면 안 되는 경우, 이 구현은 예상하지 못한 동작을 할 수 있다..
젠킨스 파이프라인에서 도커 사용하기
·
프로젝트
Jenkins(이하 젠킨스)를 이용해 CI/CD를 구성하다 보면, 프로젝트 빌드를 위해 호스트에 직접 필요한 도구를 설치하는 경우가 있었다. 하지만 프로젝트가 많아지고, 각기 사용하는 언어 및 빌드 환경이 달라지게 되면 호스트 OS에 무분별하게 도구를 설치하는 상황이 생길 수 있고, 만약 조직 단위로 움직이는 회사인 경우 언어 선택 및 빌드 환경 수정 시 DevOps에게 불필요한 작업 리소스를 줄 수 있다. 젠킨스는 이런 문제를 인식하고 파이프라인에 도커를 사용하도록 지원한다. 플러그인 설치 젠킨스 파이프라인에서 도커를 사용하기 전 필요한 플러그인을 설치한다. Docker plugin Docker pipeline 그리고 호스트 OS에 도커를 사용할 수 있는 환경이 필요하다. 예시 pipeline { ag..
I am메모리에요~ 🤗
·
프로젝트/개발
백수가 주말에 장애대응을 할 수 있다? 여느 날과 같이 구직에 쫓기며 폭풍 개발을 하던 와중에 홈랩 서버가 갑자기 이륙을 하기 시작했다. 무슨 상황인지 싶어 모니터링 도구를 보니 메모리가 매우 화나있었다. 일단 평소 1Gb RAM으로 충분히 동작하고 있어서, 단순히 "팀원이 빌드 실행하셨나 보다.." 정도로 생각하고 신경을 안 쓰다가 시간이 지나도 계속된 엔진 소음으로 문제를 확인하니 이상한 점이 있었다. 첫 번째로 갑자기 높아진 메모리 사용량이다. 처음엔 단순히 빌드 작업 중이시구나 생각했지만, 빌드를 하는거면 메모리보단 CPU가 더 높아야 하는데 CPU는 굉장히 잔잔했다. 왼쪽이 문제 상황에서 CPU 상황이고, 오른쪽은 문제를 해결한 후 테스트로 빌드를 실행할 때 CPU 상황이다. 메모리 사용량이 갑..
첫 번째, TL;DR
·
프로젝트/개발
TL;DR 코드로 하루를 빛내며, 미래를 채워가는 여정에 함께하세요. 내가 놓치고 있던 개발 경험을 데이터화 해보자! 처음 이 프로젝트를 구상한 단계에서 내가 겪은 문제는 파편화된 개발 경험을 관리하기 어려웠던 것이다. 예를 들어서 jira, wakatime, github commit, 알고리즘 문제 등등 내가 했던 경험들이 모두 파편화되어서 이 문제를 어떻게 해결하면 좋을까? 라는 생각이 들었다. 1. 타켓 유저 선정 개발 경험을 가장 외부에 들어냈으면 하는 유저층은 개발 직군으로 취업을 희망하는 관련 학과 학생, 취준생 등등으로 유추했다. 관련해 에브리타임, 카카오톡 IT 직군 취업 준비생, 국비 수강생 등을 대상으로 설문조사를 진행했다. 많은 인원은 아니지만, 총 32명의 설문 결과를 기반으로 서비..