Kotlin Coroutines(코틀린 코루틴) [3] Coroutine Scope

2개의 end-point에서 데이터를 가져와야하는 상황을 가정해봅시다.위 코드는 getUserProfile suspend 함수에서 2개의 suspend 함수를 호출하여 데이터를 가져옵니다.그러나 위 경우 순차적으로 실행되기 때문에 총 2초가 소요됩니다.두 함수를 병렬적

2022년 11월 24일
·
0개의 댓글
·
post-thumbnail

Kotlin Coroutines(코틀린 코루틴) [2] Coroutine Context

이전 포스팅에서 살펴본 코루틴 빌더의 정의를 살펴보면 첫번 째 파라미터로 CoroutineContext 를 받는 것을 확인할 수 있습니다.CoroutineScope의 정의를 살펴보면 단순히 CoroutineContext 객체만을 갖고있는 인터페이스였습니다.그렇다면 Co

2022년 11월 20일
·
0개의 댓글
·
post-thumbnail

Kotlin Coroutines(코틀린 코루틴) [1] Coroutine Builders

Kotlin은 언어 수준에서 coroutine을 제공함으로써 유연하게 비동기/논블록킹 프로그래밍을 할 수 있도록 합니다.그러나 kotlin 표준 라이브러리에 포함된 built-in coroutine은 low-level API 만 제공하기 떄문에 보통 더 많은 high-

2022년 11월 20일
·
0개의 댓글
·

[F-LAB 멘토링 후기] 대기업SI ➔ 삼성전자 ➔ 유니콘 기업으로까지의 여정

나는 컴퓨터공학과를 졸업했다. 재학 중 데이터베이스, 운영체제, 네트워크, 알고리즘 등 수 많은 전공과목을 수강했고 성적도 나쁘지 않았다.그러나 그저 성적을 잘 받기위해 지식을 받아들일 뿐이었지 수업 내용이 크게 와닿지 않았다. "그래서 이런 지식이 실무에 필요해?"

2022년 3월 24일
·
10개의 댓글
·

스프링 API 공통 응답 포맷 개발하기

클라이언트 ↔︎ 서버 구조에서클라이언트는 서버에 요청을 보내고 서버는 요청에 대한 결과를 응답합니다.예를 들어 클라이언트가 1번 상품을 요청하는 경우 서버는 1번 상품을 조회해 응답하게 됩니다.일반적인 API 통신의 경우 주로 Json으로 응답하게 되는데 @Respon

2022년 3월 10일
·
1개의 댓글
·
post-thumbnail

스프링 사용자 지정(커스텀) 유효성 체크 및 예외처리

이전 포스팅에서 Hibernate Validator를 통해 어노테이션 기반으로 제약사항을 표현하고 유효성 체크 및 예외처리를 구현하는 방법에 대해 알아보았습니다. 이번 포스팅에서는 사용자 지정(커스텀) 유효성 체크 및 예외처리 방식을 살펴보도록 하겠습니다.위 코드는 숙

2022년 2월 27일
·
0개의 댓글
·

웹에서의 인증 및 인가(Sesson/JWT) 구현

인증(Authentication) : 사용자의 신원을 확인하는 행위인증 은 특정 리소스에 접근하려는 사용자가 누구인지 확인할 때 사용합니다.일상 생활에 비유해보면 회사에서는 출입증 또는 생체정보를 통해 출입하려는 사람의 신원을 확인합니다.웹에서는 보통 아이디와 패스워드

2022년 1월 15일
·
0개의 댓글
·
post-thumbnail

Elastic APM 구성하기

최근 노트북을 새로 바꾸면서 다시 Elastic APM을 구성하였는데,블로그로 정리해두면 좋을것 같아 Elastic APM 도큐먼트를 다시 살펴보게 되었습니다.Elastic APMElastic APM은 애플리케이션 성능 모니터링 시스템이다.요청에 대한 응답 시간, DB

2022년 1월 11일
·
1개의 댓글
·
post-thumbnail

선점 잠금 방식을 활용한 호텔 예약 기능 구현 - 동시성 문제

룸 인벤토리에서 재고를 확인한다. 재고가 있는 경우 물량을 1 감소시킨다.예약을 진행한다.위 절차는 한 트랜잭션 내에서 수행되며 각 단계 수행 중 문제가 생기는 경우 전체가 롤백됩니다. 이 때 두명의 고객이 재고가 하나 남은 방을 동시에 예약하려고 하는 상황을 가정해

2021년 10월 30일
·
0개의 댓글
·
post-thumbnail

Spring JDBC를 통한 Batch Insert

숙박 예약 서비스 개발 중 인벤토리 추가 API를 개발하고 있었습니다.숙소 관리자는 본인이 등록한 RoomType의 Inventory를 추가할 수 있습니다.아래 Json 데이터를 받아 startDate 에서 endDate까지 예약 가능한 Room 갯수를 availabl

2021년 10월 21일
·
0개의 댓글
·
post-thumbnail

Artillery를 사용한 Stress Testing(DB Connection 데드락)

REST API 백엔드 시스템에서 Stress Testing을 위해 Artillery를 사용 Node.js, NPM 설치를 진행합니다. 설치가 완료되면 아래와 같이 버전을 확인할 수 있습니다.npm을 통해 아래 명령어로 Artillery를 설치합니다.공식 문서처럼 전역

2021년 10월 5일
·
0개의 댓글
·
post-thumbnail

flyway를 사용한 DB 버전 관리

Flyway필요성대부분의 프로젝트는 다수의 배포 환경을 가지고 있다.local dev(test) prod버전별 DB 스크립트 파일은 아마 다음과 같이 스크립트 파일을 쭉~ 열거하여 관리하고 일일이 파일을 DBMS에서 실행하고 있었다.개발 DB에서 변경한 Schema,

2021년 9월 12일
·
0개의 댓글
·

Docker MySQL 개발환경을 셋팅해보자

pull 명령어를 통해 docker hub에서 MySQL 이미지를 가져옵니다.images 명령어를 통해 가져온 이미지 목록을 확인할 수 있습니다.version을 명시해주지 않으면 가장 최신버전을 가져오는데 5.7 버전이네요.docker-compose 파일을 통해 여러

2021년 9월 11일
·
0개의 댓글
·
post-thumbnail

[Git Hook] Git Hook 사용하여 Java 코딩 컨벤션 지키기

코딩 컨벤션은 일종의 개발자들 사이의 규칙입니다.코딩 컨벤션을 지켜 전체적으로 일관성있는 코드를 작성함으로써 유지보수성을 높일 수 있습니다.Google Java Style Guidehttps://google.github.io/styleguide/javaguid

2021년 9월 1일
·
0개의 댓글
·
post-thumbnail

[GitHub Actions] Pull Reqeust시 코드 테스트 실행하기

예를 들어 누군가 저장소에 대한 pull 요청을 할 때마다 테스트 스크립트를 실행하는 명령을 수행할 수 있고작업 결과를 저장소에 push 할 때 코드 테스트를 실행하여이상이 없다면 운영 서버에 적용하고담당자에게 작업 완료 메시지를 보내는 등의 작업을 수행할 수 있습니다

2021년 8월 31일
·
0개의 댓글
·
post-thumbnail

[Book] 함께 자라기 - 애자일로 가는 길

단순히 시간을 많이 할애하는것으로는 실력을 키울 수 없다.의식적으로 부족한 점을 개선하려고 노력하는 시간이어야 의미를 가질 수 있다.그렇다면 부족한 점을 개선하기 위해서는 무엇이 중요할까?자신이 무엇이 부족한지 파악하는 것이 중요하다는 생각이 들었다.(이는 자신이 아는

2021년 8월 27일
·
0개의 댓글
·
post-thumbnail

스프링 시큐리티가 지원하는 인증에 대해 알아보자

인증 은 특정 리소스에 접근하려는 사용자가 누구인지 확인할 때 사용합니다.일상 생활에 비유해보면 회사에서는 출입증 또는 생체정보를 통해 출입하려는 사람의 신원을 확인합니다.웹에서는 보통 아이디와 패스워드를 이용하여 로그인을 통해 본인임을 증명합니다.일반적으로 사원의 권

2021년 8월 12일
·
0개의 댓글
·
post-thumbnail

MyBatis foreach 구문을 통해 N + 1 문제 해결하기

한 번의 쿼리 수행을 위해 N번의 추가적인 쿼리를 수행해야 하는 문제입니다.주문 상품 리스트 정보를 가지고 주문 생성 기능을 수행시 for문을 돌며 주문 상품 항목의 수만큼 N번의 Select 쿼리를 수행합니다.고객이 주문하고자 하는 상품이 시스템에 존재하는지, 주문

2021년 8월 4일
·
0개의 댓글
·
post-thumbnail

MyBatis Unsupported conversion from LONG to java.sql.Timestamp 해결하기 (@Builder 어노테이션 고찰)

MyBatis Mapper 인터페이스를 통해 SELECT SQL 쿼리 명령을 수행할 때 Error attempting to get column 'id' from result set. Cause: java.sql.SQLDataException: Unsupported

2021년 8월 4일
·
1개의 댓글
·
post-thumbnail

MySQL 실행계획을 출력하고 개선해보자

id : 실행 순서를 표시하는 숫자select_type : SELECT 문의 유형을 출력partitions : 데이터가 저장된 논리적인 영역특정 파티션에 선택적으로 접근하는 것이 SQL 성능 측면에서 유리하다.type : 테이블의 데이터를 어떻게 찾을 것인지에 관한 정

2021년 7월 25일
·
0개의 댓글
·