전체 글27 밀키트 도메인의 주문-결제 흐름 개선하기 밀키트 도메인의 특성 분석 사용자는 유통기한이 5일 이상 남아있는 제품을 받아야함 재고의 유통기한을 주기적으로 관리해주어야함 - 유통기한 임박 제품을 사용자에게 제공하면 안됨 일자별 재고를 따로 관리해주어야 함 주문 흐름 설계 전체적으로 주문 flow를 동기적으로 구성했음 1. 주문을 하려면 수량을 확보해야함 2. 재고 감소를 반영해야함 (향후 배치 작업으로 분리함) 3. 상품 수량을 감소시켜야함 4. 결제 처리를 진행해야 함 (Toss 테스트 결제 서버) 위의 동기적 방식을 진행하면서 상품 수량에 대해 동시성 이슈가 있기 때문에 비관적 락을 걸어 문제를 해결함 문제 발생 부하 테스트 진행 - EC2 t4small server 대상 테스트입니다 nGrinder을 사용해 vUser 20 기준으로 한 상품 .. 2023. 9. 3. [이펙티브 자바] 박싱된 기본 타입보다는 기본 타입을 사용하라- item 61 박싱 타입 (Boxing type) 식별성을 가짐 같은 값을 가져도 다르다고 판단될 수 있음 필자) Wrapper class라고도 불리며 primitive type을 Wrapping한 클래스입니다 ex) Integer, Long @Test @DisplayName("Boxing된 기본 타입은 같은 값을 가져도 다르다고 판단될 수 있다") void test() { assertThat(new Integer(42) == new Integer(42)).isFalse(); } 필자) 간단한 테스트를 돌려봤습니다. ==는 내부에 동작된 equals가 동작하지 않고 주소값을 비교하기 때문에 같지 않다고 판단됩니다. //in Integer.class public boolean equals(Object obj) { if .. 2023. 7. 24. 게터(Getter)를 쓰지 않는다 객체지향 생활체조의 원칙을 보면 규칙 9: 게터/세터/프로퍼티를 쓰지 않는다. 가 있습니다. 위의 규칙을 적용해보며 느낀점에 대해 이야기해보도록 할게요! Getter을 사용한다면? Getter을 쓴다는 것은 내부의 상태를 노출한다는 것입니다. 내부 필드를 밖으로 꺼내 로직을 구현한다면 어떻게 될까요? class Car { private final Handle handle ... public getHandel(){ return handle; ] } class 외부 { ... void moveRightCar(Car car) }{ Handel handle = car.getHandle(); handle.turnRight(); } } 이해하기 쉬운 예시를 만들어보았습니다. "차를 오른쪽으로 가기 위해 핸들을 꺾는.. 2023. 7. 16. 일급 컬렉션(First Collection class)를 사용하자 자동차 경주 미션과 로또 미션을 진행하며 일급 컬렉션을 적용해보게 되었는데요 일급 컬렉션에 대한 설명은 이동욱님의 블로그 글 이 잘 정리되어 있어 참고하시면 좋을 것 같습니다 제가 실제 요구사항에 적용해보며 느꼈던 장점 위주로 작성하도록 하겠습니다. 일급 컬렉션이란? 일급 컬렉션은 소트웍스 앤솔러지 책의 객체지향 생활 체조 원칙에 언급되었습니다. 규칙 8: 일급 콜렉션을 쓴다. 요약하자면 Collection을 Wrapping하면서, 그 외 다른 멤버 변수가 없는 객체를 일급 컬렉션이라고 합니다. 특정 요구사항의 책임을 담당하는 컬렉션 객체를 관리할 수 있다. 로또 게임 요구사항 중 로또 티켓에 관한 요구사항이 있었는데요 로또하나는 6개의 로또번호로 구성된다. 당첨번호와 하나의 로또티켓을 비교해서, 몇등인.. 2023. 7. 13. 우아한테크캠프 6기 최종 합격 후기 (+ OT) 우아한 테크 캠프 6기에 최종 합격을 했습니다! 우테캠에 대한 간단한 소개와 준비 과정에 대해서 적어보도록 할게요! (조회수를 벌어보자 ㅎ...) 우아한 테크 캠프란? 주소: 우아한 테크 캠프 6기 (우아한 형제들) 방학(7~8월) 간 집중해서 교육하는 교육형 인턴 프로그램이며, 우아한 형제들 사이트에서는 우아한테크캠프는 우아한형제들의 신입개발자 채용 과정이기도 하지만, 개발자가 되고자 하는 분들 누구나 환영하는, 참가 자체만으로도 유익한 교육 프로그램, 캠프가 되고자 합니다. 라고 소개합니다. 기존의 우아한 테크 캠프는 프론트엔드, 앱 과정을 뽑았고, 정식 신입 채용을 하지 않기 때문에 백엔드를 지망하는 제 입장에서 우아한 형제들 입사를 생각조차 하지 못했었는데요. 올해는 갑자기! 백엔드 과정을 모집해.. 2023. 7. 4. [이펙티브 자바] toString을 항상 재정의하라 - item 12 toString의 일반 규약 "간결하면서 사람이 읽기 쉬운 형태의 유익한 정보"를 반환해야한다. 모든 하위 클래스가 이 메서드를 재정의하는 것이 좋다. 구현의 장점 toString을 잘 구현한 클래스는 사용하기에 훨씬 즐겁다. 그 클래스를 사용한 시스템은 디버깅하기 쉽다. 해당 클래스를 직접 호출하지 않더라도 다른 어딘가에서 쓰인다 (printf, 문자열 +연산, assert 등) 실제 구현 그 객체가 가진 주요 정보 모두를 반환하는 게 좋다 포맷 명시에 대하여 장점 그 객체는 표준적이고, 명확하고, 사람이 읽을 수 있게 된다 그 값 그대로 입출력에 사용하거나 csv 파일 등으로 저장할 수 있다. 포맷에 맞는 문자열 객체를 상호 변환할 수 있는 정적 팩토리 메서드를 제공하는 것이 좋다 단점 포맷을 한번 .. 2023. 6. 29. 이전 1 2 3 4 5 다음