2개의 end-point에서 데이터를 가져와야하는 상황을 가정해봅시다.위 코드는 getUserProfile suspend 함수에서 2개의 suspend 함수를 호출하여 데이터를 가져옵니다.그러나 위 경우 순차적으로 실행되기 때문에 총 2초가 소요됩니다.두 함수를 병렬적
이전 포스팅에서 살펴본 코루틴 빌더의 정의를 살펴보면 첫번 째 파라미터로 CoroutineContext 를 받는 것을 확인할 수 있습니다.CoroutineScope의 정의를 살펴보면 단순히 CoroutineContext 객체만을 갖고있는 인터페이스였습니다.그렇다면 Co
Kotlin은 언어 수준에서 coroutine을 제공함으로써 유연하게 비동기/논블록킹 프로그래밍을 할 수 있도록 합니다.그러나 kotlin 표준 라이브러리에 포함된 built-in coroutine은 low-level API 만 제공하기 떄문에 보통 더 많은 high-
나는 컴퓨터공학과를 졸업했다. 재학 중 데이터베이스, 운영체제, 네트워크, 알고리즘 등 수 많은 전공과목을 수강했고 성적도 나쁘지 않았다.그러나 그저 성적을 잘 받기위해 지식을 받아들일 뿐이었지 수업 내용이 크게 와닿지 않았다. "그래서 이런 지식이 실무에 필요해?"
클라이언트 ↔︎ 서버 구조에서클라이언트는 서버에 요청을 보내고 서버는 요청에 대한 결과를 응답합니다.예를 들어 클라이언트가 1번 상품을 요청하는 경우 서버는 1번 상품을 조회해 응답하게 됩니다.일반적인 API 통신의 경우 주로 Json으로 응답하게 되는데 @Respon
이전 포스팅에서 Hibernate Validator를 통해 어노테이션 기반으로 제약사항을 표현하고 유효성 체크 및 예외처리를 구현하는 방법에 대해 알아보았습니다. 이번 포스팅에서는 사용자 지정(커스텀) 유효성 체크 및 예외처리 방식을 살펴보도록 하겠습니다.위 코드는 숙
인증(Authentication) : 사용자의 신원을 확인하는 행위인증 은 특정 리소스에 접근하려는 사용자가 누구인지 확인할 때 사용합니다.일상 생활에 비유해보면 회사에서는 출입증 또는 생체정보를 통해 출입하려는 사람의 신원을 확인합니다.웹에서는 보통 아이디와 패스워드
최근 노트북을 새로 바꾸면서 다시 Elastic APM을 구성하였는데,블로그로 정리해두면 좋을것 같아 Elastic APM 도큐먼트를 다시 살펴보게 되었습니다.Elastic APMElastic APM은 애플리케이션 성능 모니터링 시스템이다.요청에 대한 응답 시간, DB
룸 인벤토리에서 재고를 확인한다. 재고가 있는 경우 물량을 1 감소시킨다.예약을 진행한다.위 절차는 한 트랜잭션 내에서 수행되며 각 단계 수행 중 문제가 생기는 경우 전체가 롤백됩니다. 이 때 두명의 고객이 재고가 하나 남은 방을 동시에 예약하려고 하는 상황을 가정해
숙박 예약 서비스 개발 중 인벤토리 추가 API를 개발하고 있었습니다.숙소 관리자는 본인이 등록한 RoomType의 Inventory를 추가할 수 있습니다.아래 Json 데이터를 받아 startDate 에서 endDate까지 예약 가능한 Room 갯수를 availabl
REST API 백엔드 시스템에서 Stress Testing을 위해 Artillery를 사용 Node.js, NPM 설치를 진행합니다. 설치가 완료되면 아래와 같이 버전을 확인할 수 있습니다.npm을 통해 아래 명령어로 Artillery를 설치합니다.공식 문서처럼 전역
Flyway필요성대부분의 프로젝트는 다수의 배포 환경을 가지고 있다.local dev(test) prod버전별 DB 스크립트 파일은 아마 다음과 같이 스크립트 파일을 쭉~ 열거하여 관리하고 일일이 파일을 DBMS에서 실행하고 있었다.개발 DB에서 변경한 Schema,
pull 명령어를 통해 docker hub에서 MySQL 이미지를 가져옵니다.images 명령어를 통해 가져온 이미지 목록을 확인할 수 있습니다.version을 명시해주지 않으면 가장 최신버전을 가져오는데 5.7 버전이네요.docker-compose 파일을 통해 여러
코딩 컨벤션은 일종의 개발자들 사이의 규칙입니다.코딩 컨벤션을 지켜 전체적으로 일관성있는 코드를 작성함으로써 유지보수성을 높일 수 있습니다.Google Java Style Guidehttps://google.github.io/styleguide/javaguid
예를 들어 누군가 저장소에 대한 pull 요청을 할 때마다 테스트 스크립트를 실행하는 명령을 수행할 수 있고작업 결과를 저장소에 push 할 때 코드 테스트를 실행하여이상이 없다면 운영 서버에 적용하고담당자에게 작업 완료 메시지를 보내는 등의 작업을 수행할 수 있습니다
단순히 시간을 많이 할애하는것으로는 실력을 키울 수 없다.의식적으로 부족한 점을 개선하려고 노력하는 시간이어야 의미를 가질 수 있다.그렇다면 부족한 점을 개선하기 위해서는 무엇이 중요할까?자신이 무엇이 부족한지 파악하는 것이 중요하다는 생각이 들었다.(이는 자신이 아는
인증 은 특정 리소스에 접근하려는 사용자가 누구인지 확인할 때 사용합니다.일상 생활에 비유해보면 회사에서는 출입증 또는 생체정보를 통해 출입하려는 사람의 신원을 확인합니다.웹에서는 보통 아이디와 패스워드를 이용하여 로그인을 통해 본인임을 증명합니다.일반적으로 사원의 권
한 번의 쿼리 수행을 위해 N번의 추가적인 쿼리를 수행해야 하는 문제입니다.주문 상품 리스트 정보를 가지고 주문 생성 기능을 수행시 for문을 돌며 주문 상품 항목의 수만큼 N번의 Select 쿼리를 수행합니다.고객이 주문하고자 하는 상품이 시스템에 존재하는지, 주문
MyBatis Mapper 인터페이스를 통해 SELECT SQL 쿼리 명령을 수행할 때 Error attempting to get column 'id' from result set. Cause: java.sql.SQLDataException: Unsupported
id : 실행 순서를 표시하는 숫자select_type : SELECT 문의 유형을 출력partitions : 데이터가 저장된 논리적인 영역특정 파티션에 선택적으로 접근하는 것이 SQL 성능 측면에서 유리하다.type : 테이블의 데이터를 어떻게 찾을 것인지에 관한 정