반응형

IT/Spring 15

[spring core] Databuffer

회사에서 클라우드로 서비스를 옮겼습니다. 그런데 메모리 누수가 발생해서 분석해보니 Databuffer 해제를 해주지 않아서 발생한 문제였습니다. 도대체 databuffer가 무엇이기 때문에 이러한 문제가 발생했는지 알기 위해서 정리했습니다. Databuffer를 알기 위해서 Buffer부터 살펴보기로 했습니다. Buffer 버퍼는 두 장치간에 속도차이로 인한 처리 속도 지연을 방지하기 위해서 도입된 개념입니다. 아래 예시를 보겠습니다. CPU는 100개의 작업을 처리할 수 있지만, DISK는 1개를 처리할 수 있습니다. DISK가 1개를 처리하는 동안에는 CPU의 프로세스가 잡혀 있기 때문에 CPU도 1개를 처리할 때까지 기다려야 합니다. 그렇다면, CPU는 1/100를 효율을 발휘하고 있습니다. 이때,..

IT/Spring 2022.08.20

[리액티브 API] WebClient 개요와 사용법

리액티브 방식으로 응답 데이터를 사용하기 위해서는 Flux나 Mono 타입으로 데이터를 래핑해야 합니다. 스프링 3.0에서 소개된 RestTemplate의 리액티브 대안으로 스프링 5에서는 WebClient를 제공하고 있습니다. Webclient는 스프링 Webflux 라이브러리에 속해 있고, HTTP 프로토콜에서 동작하고 있습니다. WebClient는 웹 요청을 수행하기 위한 인터페이스로, 요청을 나타내고 전송하게 해주는 빌더 방식의 인터페이스를 사용합니다. WebClient를 사용하는 일반적인 패턴은 다음과 같습니다. WebClient 인스턴스 생성(또는 빈으로 주입) -> HTTP 메소드 지정 -> URI와 헤더 지정 -> 요청 보내기 -> 응답 받기 몇 가지 예시로 WebClient 사용법을 살펴..

IT/Spring 2022.07.26

[리액티브 API] 비동기 웹 프레임워크, WebFlux

스프링 MVC와 같은 Servlet 기반의 웹 프레임워크는 요청이 처리될 때 스레드 풀에서 작업 스레드를 가져와서 해당 요청을 처리하고, 작업 스레드가 종료될 때까지 요청 스레드를 블로킹합니다. 따라서 블로킹 웹 프레임워크는 요청량의 증가에 따른 확장이 어렵습니다. 요즘 같이 사람들이 빈번하게 컨텐츠를 소비하고, IoT가 끊임없이 API 통신을 하게되면 확장성이 부각됩니다. 비동기 웹 프레임워크는 적은 수의 스레드로 높은 확장성을 성취합니다. 이벤트 루핑(event looping) 기법으로 한 스레드당 많은 요청을 처리할 수 있습니다. 이벤트 루프에서는 모든 것이 이벤트로 처리됩니다. 이벤트 루프는 요청 작업의 콜백을 등록하여 병행으로 처리하게 하고 다른 이벤트 처리로 넘어갑니다. 그리고 작업이 완료되면..

IT/Spring 2022.07.26

[리액터] 리액터 사용하기

일련의 작업 단계를 기술하는 명령형 프로그램과 달리, 리액티브 프로그래밍은 데이터가 전달될 파이프라인을 구성하는 것입니다. 그리고 이 파이프라인을 통해 데이터가 전달되는 동안 어떤 형태로든 변경 또는 사용될 수 있습니다. 명령형 프로그래밍과 리액티브 프로그래밍의 차이를 예시로 알아보겠습니다. 명령형 프로그래밍 예시부터 보겠습니다. 과일의 이름을 가져와서 모두 대문자로 변경한 후 하나의 문장을 만들어 출력해보겠습니다. 이 경우는 각 줄의 코드가 같은 스레드에서 한 단계씩 차례대로 실행됩니다. 그리고 각 단계가 완료될 때까지 다음 단계로 이동하지 못하게 실행 중인 스레드를 막습니다. String fruit = "Apple"; String capitalFruit = fruit.toUpperCase(); Str..

IT/Spring 2022.07.11

[리액터] 리액터 개요

애플리케이션 코드를 개발할 때는 명령형(imperative)과 리액티브(reactive)의 두 가지 형태로 코드를 작성할 수 있습니다. 명령형은 순차적으로 연속되는 작업이며, 각 작업은 한 번에 하나씩 그리고 이전 작업 다음에 실행됩니다. 리액티브형은 데이터 처리를 위해 일련의 작업들이 정의되지만, 이 작업들은 병렬로 실행될 수 있습니다. 그리고 각 작업은 부분 집합의 데이터를 처리할 수 있으며, 처리가 끝난 데이터를 다음 작업에 넘겨주고 다른 부분 집합의 데이터로 계속 작업할 수 있습니다. 리액티브 프로그래밍은 순차적으로 수행되는 작업 단계를 나타낸 것이 아니라, 데이터가 흘러가는 파이프라인이나 스트림을 포함합니다. 그리고 리액티브 스트림은 데이터 전체를 사용할 수 있을 때까지 기다리지 않고 사용 가능..

IT/Spring 2022.07.11

Spring boot와 MariaDB를 JPA로 연동

Dependency를 추가합니다. 저는 gradle에서 진행했습니다. maven은 이곳에서 찾아서 넣어주시면 됩니다. implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.mariadb.jdbc:mariadb-java-client' // MariaDB DB의 설정 정보를 추가합니다. application.yaml에 아래와 같이 넣어줍니다. spring: datasource: url: jdbc:mariadb://localhost:3306/[DB 이름] driver-class-name: org.mariadb.jdbc.Driver username: root password: 1234 jpa: open-..

IT/Spring 2022.03.20

[안드로이드 앱 서버 만들기] 5. 안드로이드 앱과 서버 통신

게시된 내용은 작성자가 공부한 내용을 정리하여 기록하였습니다. 일부 빠지거나 부족한 부분이 있을 수 있습니다. 최대한 편집 없이 기록하였습니다. 출처 블로그 사용 도구 : STS 4 (Spring Tools Suite), AWS EC2, MariaDB, Windows, Android Studio 아래와 같은 앱을 만들겠습니다. 이름, 나이, 주소를 넣고 ADD를 누르면 DB에 추가 됩니다. 수정을 눌러서 이름, 나이, 주소를 수정합니다. 삭제를 눌러서 데이터를 삭제합니다. 1. 안드로이드 프로젝트 생성 안드로이드 프로젝트를 생성하겠습니다. Empty Activity를 선택합니다. 그리고 프로젝트 이름을 정하고, Java를 선택합니다. 2. 설정 추가 Lombok, RecyclerView, Retrofit..

IT/Spring 2021.07.07

[안드로이드 앱 서버 만들기] 4. AWS EC2 인스턴스에 배포

게시된 내용은 작성자가 공부한 내용을 정리하여 기록하였습니다. 일부 빠지거나 부족한 부분이 있을 수 있습니다. 최대한 편집 없이 기록하였습니다. 출처 블로그 사용 도구 : STS 4 (Spring Tools Suite), AWS EC2, MariaDB, Windows 1. Github에 올리기 Github Desktop 애플리케이션을 이용해서 스프링 프로젝트를 Github에 올리겠습니다. Github 주소와 연동한 후에 Local에서 프로젝트를 가져와서 올려줍니다. 올라갔습니다. 2. 인스턴스에 프로젝트 가져오기 Putty를 이용해서 ec2 인스턴스에 접속합니다. 접속하는 방법을 잊어버리셨다면, 여기에 있습니다. 아래 명령어로 Github의 프로젝트를 가져옵니다. Private 레파지토리를 가져올 경우에..

IT/Spring 2021.07.06

[안드로이드 앱 서버 만들기] 3. MariaDB와 연동 그리고 JPA로 CRUD 메소드 만들기

게시된 내용은 작성자가 공부한 내용을 정리하여 기록하였습니다. 일부 빠지거나 부족한 부분이 있을 수 있습니다. 최대한 편집 없이 기록하였습니다. 출처 블로그 사용 도구 : STS 4 (Spring Tools Suite), AWS EC2, MariaDB, Windows 1. 라이브러리 추가 DB 연동을 위한 라이브러리를 추가 하겠습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testImplemen..

IT/Spring 2021.07.06

[안드로이드 앱 서버 만들기] 2. AWS EC2와 MariaDB 생성

게시된 내용은 작성자가 공부한 내용을 정리하여 기록하였습니다. 일부 빠지거나 부족한 부분이 있을 수 있습니다. 최대한 편집 없이 기록하였습니다. 사용 도구 : STS 4 (Spring Tools Suite), AWS EC2, MariaDB, Windows 1. AWS EC2 인스턴스 생성 AWS EC2 인스턴스 생성 방법을 포스팅 해놓아서 그대로 사용하겠습니다. 생성한 인스턴스에 접속하는 방법도 여기 있습니다. AWS 인스턴스에 대해 공부하고 싶으신 분은 여기 유튜브 강의가 있습니다. 2. MariaDB 생성 AWS에서는 RDS 서비스로 MariaDB를 선택해서 데이터 베이스를 간단하게 생성할 수 있습니다. 구글에서 간단하게 찾아보시면 되겠습니다. 저는 Terminal로 MariaDB 5.5를 설치했었습..

IT/Spring 2021.07.06
반응형