전체 글 (564) 썸네일형 리스트형 [Spring Boot] Spring Boot에 HTTP/2 적용하기 JDK 9, Tomcat 9, Spring boot 2.X에 HTTP/2를 설정하는 방법을 알아보자. (JDK 8 이하이거나 Tomcat이 8이하일 경우 별도의 라이브러리[libtcnative library] 설치후 의존성을 주입해주어야 한다.) 1. ssl설정 : Spring boot에 HTTP/2를 적용하기 위해서는 ssl 설정은 필수이다. 만약 설정하지 않으면 HTTP/2 통신이 지원되지 않는다. - keystore 파일 생성 하기 - Terminal 창에 아래 커맨드를 입력하여 keystore 생성. $keytool -genkey -alias spring -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 400.. [JAVA8] 함수형 인터페이스 정리 함수형 인터페이스는 오직 하나의 추상 메서드를 지정한다. 함수형 인터페이스의 추상 메서드는 람다 표현식의 시그너처를 묘사한다. 함수형 인터페이스의 추상 메서드 시그너처를 함수 디스크립터라고 한다. 자바8 라이브러리에서 제공하고 있는 function패키지에 함수형 인터페이스를 알아보자. function 패키지에서 지원하고 있는 함수형 인터페이스는 별도에 인터페이스 정의 없이 바로 개발자가 사용할 수 있다. 1. Predicate Predicate 인터페이스는 test라는 추상 메서드를 정의하고 test는 제네릭 형식 T의 객체를 인수로 받아 boolean을 반환한다. @FunctionInterface public interface Predicate { boolean test(T t); } *기본형 특화형 .. [AWS] 비구조화된 데이터 분석 (로그데이터 분석하기) AWS를 활용하면 분산 처리 기술인 하둡을 손쉽게 이용 가능하다. 1.구조화되지 않은 데이터 다루기 - 로그 데이터를 분석하기 위해서는 전처리를 해야만 합니다. 로그 파일은 단순한 텍스트 파일로, 컬럼 및 데이터형 / 자리수와 같은 스키마 정의가 엄격하게 구조화되어 있지 않기 때문입니다. - AWS의 레드시프트에 넣을 수 있는 것은 구조화된 데이터뿐이기 때문에 로그 파일에 정보들을 레드시프트에서 관리하기 위해서는 적합한 데이터 형식으로 변환해줘야 하는 작업이 필요합니다. - 필요한 데이터만 가져와 가져와야 합니다. 로그 데이터에는 우리가 분석하기 위해 필요한 데이터 뿐만 아니라 다양한 정보가 담겨져 있습니다. 그렇기 때문에 우리가 필요로 하는 데이터만 선별해서 가져와야 하는 작업이 필요합니다. - 데이터.. [AWS] 구조화된 데이터 분석하기 1. 레드 시프트(RedShift) : 분석 대상 데이터를 저장하는 DB로서 대용량 데이터의 검색과 분석에 최적화된 DB 서비스이다.레드 시프트는 대용량 데이터를 열 방향으로 부석 및 집계하는 작업을 효율적으로 수행하도록 만들어진 DB이다. [특징] -앞서 이야기 했듯이 열 방향 분석 및 집계를 빠르게 처리할 수 있는 DB이다. -여러 서버에서 분산 처리하는 구조이기 때문에 분석할 데이터양이 늘어도 확장이 자유롭다. - 레드 시프트는 DWH(Data WareHouse) 및 BI(Business Intelligence)의 기본 DB로 적합하다. - 레드 시프트는 RDS와 마찬가지로 관리형 DB 서비스로 제공되기 때문에 사용자는 서버 구성 및 데이터 중복성과 같은 것들에 대해서 고민할 필요가 없음. - 레드.. [AWS] API Gateway API Key 알아보기 AWS API Gateway에서 API Key를 활성화하여 서비스를 제공할 경우에는 사용자는 API키 정보를 필수로 탑재하여 사용을 해야 한다. 키 값이 일치할 경우에는 사전에 설정한 할당량과 속도에 맞게 서비스되고 그렇지 않은 경우 InvalidKeyParameter 예외가 발생한다. 아래와 같은 방식으로 구현하여 사용할 수 있다. 1. 사용자가 HEADER값에 API KEY값을 입력하여 요청. (사용자에게 API KEY값을 공유하여 사용한다.) : 사용자는 REST API 요청시 X-API-Key 헤더로서 API KEY를 함께 전달한다. (단, 이와 같이 사용하면 API KEY값이 도난당할 수 있으므로 보안에 위험이 있다.) 2. 권한 부여자가 제공한 API KEY를 사용하기. 사용자가 Token값과.. [AWS] API Gateway Lambda 권한 부여자 사용하기 API에 대한 액세스 권한을 제어하는데 Lambda 함수를 사용한다. 권한 부여자는 OAuth나 SAML 같은 보유자 토큰 인증 전략을 사용할 수 있고 헤더, 경로, 쿼리문자열, 단계 변수 또는 컨텍스트 변수 요청 파라미터 정보를 활용하여 인증을 할 수 있다. *SAML : https://ko.wikipedia.org/wiki/SAML 간단히 요약하자면 Lambda로 권한 부여하기 위한 방법은 아래와 같이 두가지로 나눌 수 있다. 1. TOKEN을 사용하여 권한 부여 2. 헤더, 쿼리 문자열, 단계 변수, 컨텍스트 변수 같은 요청 파라미터를 사용하여 권한 부여 [API와 Lambda 연결하는 방법] 1. API Gateway 콘솔로 이동후 API를 선택하고 "권한 부여자"를 선택한다. 2. "+새로운 권.. [AWS] API Gateway 엑세스 제어 (안증/ 인가 / 권한 / API KEY) API Gateway에서 리소스 및 메소드별 엑세스 제어하는 방법에는 여러가지 방법이 있다. (AWS의 서비스들은 항상 최종의 솔루션을 제공하지 않는다. 다양한 수단과 방법만 제공하고 최종 결정은 사용자의 몫으로 남겨둔다.) 1. 리소스 정책 사용 - 특정 IAM 권한이나 역할을 부여 받은 사용자가 리소스별 API 호출 여부를 제어하기 위해 사용된다. - 리소스 정책은 JSON 정책 문서를 작성하여 API에 연결하여 사용한다. - 리소스 정책은 아래와 같이 크게 3가지 형태로 제공된다. 1> 지정된 AWS 계정의 사용자 2> 지정된 원본 IP 주소 범위 또는 CIDR(사이더) 블록 3> 지정된 가상 사설 클라우드 (VPC) 또는 VPC 엔드포인트(계정 무관) *[참고 CIDR : https://ko.wi.. OAuth 알아보기 [OAuth란 무엇인가?]Wiki에서 이야기 하는 OAuth는 아래와 같다. (https://ko.wikipedia.org/wiki/OAuth)OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이다.[1] 이 매커니즘은 여러 기업들에 의해 사용되는데, 이를테면 아마존,[2] 구글, 페이스북, 마이크로소프트, 트위터가 있으며 사용자들이 타사 애플리케이션이나 웹사이트의 계정에 관한 정보를 공유할 수 있게 허용한다. 위 내용을 사례와 함께 정리해 보자. 친구와 소통하는 웹서비스가 있다고 가정하자. 이 웹서비스는 사용자의 친구들의 정보를 Facebook으.. [JAVA] OkHttp로 REST API 호출하기 Android에서 많이 사용하고 있는 OkHttp에 대해 알아보자. OkHttp는 Square에서 제공하는 오픈소스 프로젝트이며 동기, 비동기 방식을 각각 제공해줌으로서 개발자가 선택하여 사용할 수 있다. [GET 동기]public void get(String requestURL) { try { OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .addHeader("x-api-key", RestTestCommon.API_KEY) .url(requestURL) .build(); //GET Request //동기 처리시 execute함수 사용 Response response = client.newCall(requ.. [JAVA] HttpClient로 REST API 호출하기 이번 페이지에서는 Apache에서 제공하고 있는 HttpClient 라이브러리를 이용해 REST API를 호출하는 방법을 알아보자. [GET]public void get(String requestURL) { try { HttpClient client = HttpClientBuilder.create().build(); // HttpClient 생성 HttpGet getRequest = new HttpGet(requestURL); //GET 메소드 URL 생성 getRequest.addHeader("x-api-key", RestTestCommon.API_KEY); //KEY 입력 HttpResponse response = client.execute(getRequest); .. 이전 1 ··· 50 51 52 53 54 55 56 57 다음