본문 바로가기

IT

[Apache Kafka] Kafka Cluster 구성하기(수정중) 0. Table of content 1. 목표 아키텍처 2. Apache Kafka Download 3. Zookeeper Cluster Configuration 4. Kafka Cluster Configuration 5. 참고자료 6. 삽질프로젝트 로그 1. 목표 아키텍처 2. Apache Kafka Download 다음 명령어를 통해 Apache Kafka 최신 버전을 다운받고 java1.8을 설치한다. sudo yum install -y java-1.8.0-openjdk-devel.x86_64 wget http://apache.mirror.cdnetworks.com/kafka/2.5.0/kafka-2.5.0-src.tgz tar -xzf kafka-2.5.0-src.tgz 압축을 해제하면 다음과 같.. 더보기
[삽질 프로젝트 계획] 티스토리 유입자 대시보드 만들기 - 밑그림 1. 대시보드에서 나타내야 할 것 - 기간에 따른 사용자 수 - 인기글 리스트 - 유입 경로 및 채널 - 유입 키워드 - 유입자 현황 차트 (척도 : 기간, Refere URL, 컨텐츠, 디바이스) 2. 추가 구현하고 싶은 것 - 전날 유입자 통계를 카카오톡으로 알림 받기 - 현재 학습하고 있는 OAuth2.0을 이용하여 대시보드 사이트 인증 - 일일 평균 유입자 현황 - 현재 기능별로 레포지토리가 분리되어있고, kafka broker에 다양한 로그들을 수집할 예정이기 때문에 향후 kubernetes를 적용할 예정 3. 사용할 기술 - DB : DynamoDB or MongoDB (조회성이 많기 때문에 RDB보다 NOSQL이 낫다고 판단) with JPA - Message Broker : Apache K.. 더보기
[삽질 프로젝트 설계] 티스토리 유입자 대시보드 만들기 - NOSQL 설계 초안 1. https://json.geoiplookup.io 오픈소스 - 위 링크를 통해 가져 올 수 있는 데이터의 목록은 다음과 같다. ( { "ip":"-", "isp":"-", "org":"", "hostname":"-", "latitude":-, "longitude":-, "postal_code":"", "city":"-", "country_code":"KR", "country_name":"South Korea", "continent_code":"AS", "continent_name":"Asia", "region":"Seoul", "district":"-", "timezone_name":"Asia\/Seoul", "connection_type":"Corporate", "asn_number":3786, .. 더보기
[AWS] Site to Site VPN with OpwnSwan구성하기 Table of content 1. AWS Site to Site VPN 구성요소 2. 목표 아키텍처 3. Hands On LAB 3.1. VPC 및 서브넷 구성 3.2. Instance 구성 3.2.1. VPC-A Instance 3.2.2. VPC-B Instance 3.3. VPN 설정 3.3.1. Customer Gateway 생성 3.3.2. Virtual Private Gateway생성 및 라우팅 전파 3.3.3. Site to Site VPN Connection 생성 및 VPN 설정 다운로드 3.4. VPC-B Instance에 VPN 설정 공유 3.4.1. VPN 구성 다운로드 3.4.2. Customer 측 인스턴스 sysctl.conf 수정 3.4.3. OpenSwan 설치 및 환경 변.. 더보기
[프로그래머스] 타겟 넘버 1. 문제 설명 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요. 2. 제한사항 주어지는 숫자의 개수는 2개 이상 20개 이하입니다. 각 숫자는 1 이상 50 이하인 자연수입니다. 타겟 넘버는 1 이상 1000 이하인 자연.. 더보기
[프로그래머스] 완주하지 못한 선수 1. 문제 설명 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 2. 제한사항 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다. 참가자 중에는 동명이인이 있을 수 있습니다. 3. 입출력 예 participant completion return [le.. 더보기
[삽질로그] OAuth2.0 with Spring Security기반 UserInfo 테이블 및 API 설계 1. Create URL : //user Method : POST Request Header Content-Type: application/json Request Body (format = JsonObject) Userinfo(userid, username, password, email, phone_number, address, ... ) - JsonObject secretHash HMAC(signing_key(clientSecret, sha256)[clientId + username]) - String Response If success, If failed, response is HTTP status code with customed error message 2. Read URL : //user/me .. 더보기
[Amazon SES] Simple Email Service Sample 0. Table of Content 1. 개발환경 2. Dependency 2.1. AWS SDK for SES Dependency 2.2. SMTP를 이용하기 위한 Dependency 3. Hands on Lab 4. Source Code 1. 개발 환경 STS 3.9.7 Spring Boot 2.2.6 Java 1.8 2. Dependency plugins { id 'org.springframework.boot' version '2.2.6.RELEASE' id 'io.spring.dependency-management' version '1.0.9.RELEASE' id 'java' } group = 'com.jeonghyeong' version = '0.0.1-SNAPSHOT' sourceCompati.. 더보기
[DynamoDB] Secondary Index 설계원칙 및 고려사항 1. Secondary Index를 사용하는 이유 다음과 같은 은행 계좌를 관리하는 테이블을 생각해보자. OriginCountry가 Germany인 모든 데이터를 불러온다고 가정하자. Query를 통해서 불러오기 위해선 AccountID와 CreationDate을 알고 있는 상황이어야 하지만 실제 Query상황에서는 이를 알 수 있는 방법이 없기 때문에 scan을 사용해야한다. scan을 사용하면 모든 데이터에 대해 검색을 실행하기 때문에 그만큼 실행속도가 느리다. 그러나 GSI를 사용하게 되면 다음과 같이 Primary Key를 원하는대로 바꿔서 테이블을 새로 생성 할 수 있다. GSI Table(우측 테이블)을 생성하면서 기존 OriginCountry 속성을 Partition Key로 설정하였다. 기.. 더보기
[Spring] @RestController vs @Controller 1. @Controller 전통적인 Spring MVC Controller는 View 기술을 이용하여 화면을 리턴하는 방식이다. json, xml형태의 객체를 반환하기 위해서는 @ResponseBody를 사용하여 json, xml형태의 객체를 리턴 할 수 있다. @Controller의 workflow는 다음과 같다. 위 workflow의 순서를 간략히 설명하면 다음과 같다. Client는 URL로 서비스에 Request를 보낸다. 해당 요청을 처리할 수 있는 Handler를 찾아 Mapping 하기 위해 Dispatcher Servlet가 인터셉트 한다. Mapping 된 Handler가 존재하는 Controller에서 해당 요청을 처리하고, Model and View 객체를 반환한다. Dispatche.. 더보기