전체 글

깃 허브: https://github.com/yujindonut
Yujindonut/경험

2023년 회고

23년은 나에게 정말 다양한 감정과 생각을 준 한해다. 1월 앱잼 서버파트원으로써 앱잼을 처음으로 참여했다. 1월 2일이 되자마자, 앱잼 같이 했던 동생과 함께 크로스핏을 시작했다. 앱잼 1주는 크로스핏 갔다가 점심쯤 홍대 숙소에 들어가서 개발을 했다. 퇴사하자마자 앱잼을 시작했었기에, 내 회사 생활의 패턴을 유지하려고 노력했다. 매일 아침 혼자 홍대 옆 홍제천을 30분정도 조깅했다. 홍대에는 맛난 디저트 가게 많아서 언제 홍대 살아보겠어 하면서 홍대 디저트 투어를 했다. 저번 앱잼은 프론트라 작업량이 엄청나게 많아서 단하루도 쉰적이 없었는데, 이번 앱잼은 비교적 여유로웠다. 매일 홍제천을 뛰고 크로스핏도 해보고 디저트 투어도 다니는 그 여유로움에 행복했다. 세미나때 Node.js도 얼레벌레 했는데, 앱..

DevOps/Kubernetes

[쿠버네티스 | Kubernetes] Cluster Architecture

쿠버네티스 클러스터 클러스터란 컨테이너 형태의 애플리케이션을 호스팅하는 물리/가상 환경의 노드들로 이루어진 집합. 물리머신, 가상 머신, 온프레미스, 클라우드에 구애 받지 않고 머신 그룹 전체에서 컨테이너를 예약하고 실행할 수 있다. 쿠버네티스 클러스트는 용도에 따라 Worker Node와 Master Node로 구분된다. Worker Node 각기 다른 컨테이너들이 선적된 컨테이너 선의 역할이다. 각기 다른 목적과 기능으로 세분화된 컨테이너들이 실제 배치되는 노드를 의미한다. Master Node 컨테이너 선단을 지휘하는 통제함의 역할. 대규모 컨테이너를 운영하려면 각 워커노드들의 가용 리소스 현황을 고려하여 최적의 컨테이너 배치와 모니터링, 컨테이너에 대한 추적 관리가 필요해진다 컨트롤 플레인(Con..

Database

[PostgreSQL] Isolation level에 따른 트랜잭션 처리 방법

Isolation level 소프트웨어를 개발하는 경우 데이터베이스 트랜잭션 내에서 복잡한 방식으로 데이터를 운영하는 코드에서 비즈니스 논리 오류가 발생하지 않도록 트랜잭션이 서로 어떻게 영향을 미치는지 알아야 합니다. PostgreSQL에서 트랜잭션을 설정하는 방법은 총 4가지 1. READ UNCOMMITTED (낮은 격리수준) 설정에는 정의되어 있지만, 지원하지 않습니다. (READ COMMITTED와 동일) 2. READ COMMITTED (기본값) 커밋된 데이터만 READ 할 수 있으며, DIRTY READ가 불가능. (DIRTY READ : 다른 트랜잭션에서 커밋하지 않는 데이터를 읽을 수 있는 것) 3. REPEATABLE READ 조회 시 항상 동일한 데이터 응답을 보장. 4. SERIAL..

Server🧤/JPA

[JPA] 동시성 처리 - 비관적 락 VS 낙관적 락

이슈 상황 진행하고 있는 프로젝트에 '끝말잇기' 기능을 제공중이다. 예외처리가 적용되지 않고 두개의 단어가 동시에 삽입되었다! 문제 해결 과정 우선 Chatgpt를 이용해서 해당 사항에 대해 물어보았다. 1. 격리수준 설정을 고려 -> 탈락 우선 PostgreSQL에서는 4가지의 Transaction 격리 수준을 설정할 수 있다. 끝말잇기에 적용하는 것을 생각해봤을때, 하나의 transaction에서 데이터를 읽을때, 다른 transaction에서 커밋되지 않은 데이터도 읽어야함. Postgresql은 Read Uncommited를 지원하지 않는다고 한다! 결론적으로 DirtyRead가 불가능하다. 2. 낙관적 락과 비관적 락 고려하기 (오 괜찮다!) 낙관적락과 비관적락을 사용하는 기준은 "동시에 수정을..

yujindonut
Yujindonut