Etc.14 좋아요 수를 이용해 동시성 처리 비교하기 목차개요좋아요 설계좋아요 수 설계동시성 문제비관적 락(Pessimistic Lock) 낙관적 락(Optimistic Lock)비관적 락(Pessimistic Lock) vs 낙관적 락(Optimistic Lock)결론1. 개요좋아요 기능을 구현하면서 마주할 수 있는 문제들과 상황을 정리해보려고 한다.특히, 좋아요 기능뿐만 아니라 데이터의 무결성을 보장하기 위해 동시성 처리를 어떻게 해야할지는 중요한 과제인데 이번 정리를 통해 차근차근 알아보자.2. 좋아요 설계기본적인 요구사항은 다음과 같다.각 사용자는 게시글마다 좋아요를 누를 수 있다.좋아요를 했다면 취소도 가능하다.idPKpost_id게시글 아이디user_id사용자 아이디created생성일시좋아요는 별도 테이블로 관리되며 post_id와 user_id.. 2025. 3. 9. 댓글 알고리즘으로 무한 depth 구현하기 목차개요최대 2depth 댓글댓글 생성 삭제댓글 목록 조회무한 depth 댓글댓글 생성 삭제댓글 목록 조회결론1. 개요처음에는 최대 2depth의 대댓글을 구현하고 이후 추가적으로 무한 depth의 대댓글을 구현해보았다.depth가 늘어날수록 계층 구조를 효율적으로 관리하고 성능, 댓글 정렬등 고려해야 할 상황이 많다.아래 어떤 알고리즘을 사용했고 구현했는지 차근차근 정리를 해보았다. 2. 최대 2depth 댓글2-1. 댓글 생성 삭제기본적인 요구사항은 다음과 같다.계층별로 오래된순으로 정렬을 한다.하위 댓글이 모두 삭제되어야 상위 댓글을 삭제할 수 있다.하위 댓글이 X, 댓글 즉시 삭제하위 댓글이 O, 댓글 삭제 표시여기서 댓글 2를 삭제하게 돠면 아래와 같다.댓글2 하위 계층에 댓글5가 존재하기 때문.. 2025. 2. 20. Github Actions으로 Sonar Cloud와 Slack 알림 설정하기 목차개요시나리오 소개사전 작업 구성워크플로우 구성마치며1. 개요Github Actions를 이용하여 CI/CD 파이프라인 구성에 대한 이해를 해보려고 한다.Github Actions는 Github 레포지토리를 이용해 간단하게 설정하고 사용하기 쉽다. 별도의 서버나 외부서비스를 구축할 필요 없이 Github에서 제공하는 기능으로 CI를 실행할 수 있기에 Github Actions를 선택하였다.2. 시나리오 소개요구사항특정 path 에 대해서만 실행 (multi-board에 src/**)main branch로 PR이 생성 & 동기화 될 때 테스트 작업 실행 (CI)PR이 main으로 merge 되면 배포 (CD)배포 성공 여부 슬랙으로 전송위에 요구사항을 반영한 대략적인 플로우는 다음과 같다.main bra.. 2025. 1. 23. 파일마다 EOL(EndOfLine) 넣어야 하는 이유는 무엇일까? 목차개요EoL은 무엇인가?파일 마지막게 개행을 왜 해야할까?IDE 설정으로 해결하기.editorconfig 파일로 해결하기결론1. 개요프로젝트 진행중에 코드리뷰를 받았던 내용 중 다음과 같이 EoL을 설정해주는게 좋다는 리뷰를 받았다.예전부터 파일마다 개행을 넣어야 한다고는 들었으나, ‘왜 넣어야 하는지?’ 에 대한 의문만 가지고 관행적으로 넣었었다.이번 기회를 통해 무심하게 생각했던 내용에 대해서 정리해보려고 한다.2. EoL은 무엇인가?EOL(End Of Line)은 “줄의 끝” 이라는 의미로 주로 프로그래밍 파일 형식에서 운영 체제에 따라 서로 다른 방식으로 표현되어진다.3. 파일 마지막게 개행을 왜 해야할까?이유는 POSIX 기반의 규칙에 기반한다. 많은 프로그램이 이 규칙에 따라 구현되어 있으면.. 2024. 11. 29. Github 저장소에 Repository Rule 제약하기 목차개요저장소 규칙(Repository Rules)결론1. 개요23년 7월에 Github 저장소에 적용할 수 있는 저장소 규칙 기능(Repository Rule)을 정식으로 공개했다.Repository를 혼자만 사용하면 규칙을 스스로 정해서 사용하면 되겠지만, 여러 사람과 협업하기 위해선 저장소 룰을 정해서 사용하면 관리하기 용이해진다.나는 간단히 저장소에 특정 인원 수 이상에게 Approve를 받아야 Merge가 가능하도록 규칙을 만들려고 한다.차근차근 하나씩 시작해보자.2. 저장소 규칙(Repository Rules)Repository의 Settings 메뉴에서 하위에 Rulesets라는 메뉴를 볼 수 있다. New ruleset을 이용해 새로운 branch ruleset을 등록해준다.Ruleset .. 2024. 11. 22. 브라우저에 URL을 입력하면 어떤 일이 벌어질까? 목차 개요 웹브라우저 URL을 입력하고 Enter 키 입력 웹 브라우저가 도메인명의 IP 주소 조회 웹 브라우저가 서버와의 TCP 연결 시작 웹 브라우저가 HTTP 요청을 서버로 전송 웹 서버가 요청을 처리하고 응답을 다시 전송 웹 브라우저가 콘텐츠 렌더링 결론 1. 개요 우리는 매일 웹 브라우저를 열고 즐겨찾는 웹사이트를 탐색한다. 주소창에 URL을 입력하거나 페이지 링크를 클릭하면 해당 페이지로 이동한다. 그런데, 그 뒷단에서 무슨 일이 일어나는지 생각해 본 적이 있는가? 이 글에서는 웹브라우저에 URL을 입력하면 어떤 일이 벌어지는지 살펴보겠다. 2. 웹브라우저 URL을 입력하고 Enter 키 입력 위와 같이 브라우저에 https://www.naver.com 입력한 URL을 분류해보자. 즉 nave.. 2024. 3. 26. 이전 1 2 3 다음