[LitmusChaos] M1에서 LitmusChaos 실행하고 카오스 주입하기
·
Infrastructure
1. 카오스 엔지니어링과 LitmusChaos 간단 설명카오스 엔지니어링은 간단히 말해 시스템의 복원력을 테스트하기 위해 의도적으로 장애를 일으켜보며 취약점을 찾고 보강하는 방식의 엔지니어링 기법이다.LitmusChaos는 쿠버네티스 플랫폼 위에서 카오스 엔지니어링을 진행할 수 있도록 도와주는 오픈소스 프로젝트이다. 2. 준비물Minikube: 쿠버네티스를 로컬 환경에서 사용할 수 있게 만든 가벼운 구현체Helm: 쿠버네티스 패키지 매니저 (like Mac의 brew, Node의 npm ...)카오스를 주입할 데모 서비스Minikube와 Helm 설치 과정은 생략하고, 데모 서비스의 경우 아래 명령어로 실행할 수 있다.# Clone Repogit clone https://github.com/GoogleC..
[트러블슈팅] M1 minikube start 실패
·
Infrastructure/Docker & k8s
1. 문제 상황 쿠버네티스 실습을 위해 minikube를 실행하려고 했는데 위와 같이 실패하였다. 2. 해결 방법https://github.com/kubernetes/minikube/issues/14477 Minikube didnt start · Issue #14477 · kubernetes/minikubeWhat Happened? when hitting command "minikube start" on local machine, getting the below error. However, i tried minikube delete and start again but didnt resolve the issue. Docker Desktop is insta...github.com위 이슈와 댓글을 참고하여mi..
[Packy] 전략 패턴으로 복잡한 if문 리팩토링하기
·
Spring
1. 들어가며패키는 온라인 상으로 선물박스를 만들고 '주고받는' 서비스이다. 패키에서는 선물박스를 접하는 입장에서 유저를 보내는 유저(Sender), 받는 유저(Receiver), 둘 다 아닌 유저(Stranger) 3가지로 구분할 수 있다. 그렇기 때문에 대부분의 기능에 대해 3가지 입장을 모두 고려하여 로직을 설계해야 한다. 그러다보니 하나의 메서드에서 if문이 늘어나고, 이는 한 메서드의 책임이 너무 커지는 문제를 초래하며 가독성도 같이 떨어진다. 이번 포스트에서는 '선물박스 삭제하기' 로직을 대표로 예시를 들어 설명하겠다. 아래는 리팩토링을 진행하기 전 코드이다.if문이 너무 많이 중첩되어 있어 주석 없이 코드를 이해하는데 오랜 시간이 소요된다..public String deleteGiftBox(..
[Packy] 선물박스 PK 생성 전략을 TSID로 변경한 이유
·
Database
1. 들어가며이번 패키 업데이트에 웹 버전을 출시하여 앱을 설치하지 않은 사람도 웹으로 선물박스를 확인할 수 있도록 할 예정이다.웹 출시 이전에는 아래 플로우에 따라 카카오톡으로 받은 선물박스를 앱에서만 확인할 수 있었다. 클라이언트는 선물박스 만들기 API의 응답값으로 받은 선물박스 ID를 사용하여 선물박스를 열 수 있는 딥링크를 생성한다.생성된 딥링크이 추가된 카카오톡 템플릿을 생성한다.선물박스를 받은 유저는 카카오톡에서 '패키 앱에서 열어보기' 버튼을 눌러 선물박스를 앱에서 확인할 수 있다. 이번 업데이트에서는 2, 3번 과정에서 딥링크 대신 제작한 웹 링크( packyforyou.com?box={giftBoxId} )를 넣고, 웹 사이트 내에 디퍼드 링크를 넣어 웹에서 앱으로 유저를 이동시키도록 ..
[Packy] 멀티모듈에서 다른 모듈의 Test Fixture 사용하기
·
Spring
1. 문제 상황진행 중인 프로젝트의 테스트 코드의 가독성이 (작성자인 나에게조차...) 가독성이 좋지 않은 것 같아 테스트 코드를 전반적으로 리팩토링하고 있다. 그 중 진행중인 작업 중 하나가 Test Fixture를 클래스로 관리하는 것이다.현재 프로젝트는 각 계층의 의존성을 분리하기 위해 멀티 모듈을 사용하고 있다. Controller와 Service는 api 모듈, Entity와 DAO는 domain 모듈에서 관리하고 있다. 그렇기 때문에 DTO를 반환하는 Fixture 클래스는 api 모듈, 엔티티를 반환하는 Fixture 클래스는 domain 모듈에서 관리하기로 결정하였다. 하지만 아래 사진처럼 api 모듈에서 domain 모듈에 있는 Fixture을 불러올 수 없는 문제가 발생하였다. 2. 문..
트랜잭션 격리 수준과 격리 수준에 따른 문제점
·
Database
1. 트랜잭션 격리성트랜잭션은 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위를 말한다.트랜잭션에는 ACID라는 네 가지 특징이 있다. 그 중 격리성(Isolation)은 트랜잭션 수행 시 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 보장하는 것을 의미한다. 2. 트랜잭션 격리 수준트랜잭션 격리 수준은 동시에 여러 트랜잭션이 처리될 때, 트랜잭션끼리 얼마나 격리되어 있는가를 나타내는 정도이다.격리성이 커질수록 더 확실한 처리가 가능하지만, 동시에 수행될 수 있는 트랜잭션이 순서대로 처리되므로 속도가 느려지게 된다. ANSI/ISO SQL 표준에서는 격리 수준을 READ_UNCOMMITED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE 4가지로 나누고..
짱정연
'분류 전체보기' 카테고리의 글 목록 (2 Page)