최신 글
-
Kafka 자바 멀티스레드 카프카 컨슈머 애플리케이션 구현 코드 이번 포스트에서는 자바 멀티스레드 카프카 컨슈머 애플리케이션을 구현해보도록 하겠습니다. 준비물 - Intellij 또는 eclipse - gradle project - jdk 1.8 - 약 10분 구현방법 이전 포스트(카프카 컨슈머 멀티쓰레드 애플리케이션 예제코드(for scala) 바로가기)에서 scala로 구현한 바가 있습니다. 이번에는 자바로 구현하고, consumer.wakeup()을 사용해서 consumer를 안전하게 해제시키는 것을 아래 코드에서 구현해보겠습.. -
AWS aws ec2에 openJDK 1.8 설치하기 실습 예제 AWS EC2에서 Amazon Linux 2 AMI를 사용할 경우 java가 설치되어 있지 않아 진행하는데 어려움을 겪으시는 분들이 많습니다. 이번 포스팅에서는 EC2(Amazon Linux 2 AMI) 사용시 1.8 openJDK를 설치하는 실습을 보여드리겠습니다. 1. EC2 발급 가장 기본적인 EC2 발급입니다. 기본 AMI를 사용해서 openJDK 설치하는 방법을 보여드릴것이므로, Amazon Linux 2 AMI를 선택합니다. 2. openjdk yum 설치 설치가 완료되고나면 pem을.. -
AWS EC2 SLA(서비스 계약 수준) 에 따른 uptime, downtime 시간 계산 EC2는 amazon에서 제공하는 인스턴스(서버) 단위입니다. AWS를 사용하는 가장 기본적인 단위라고 볼 수 있는데요. EC2는 아래와 같이 SLA(서비스 수준 계약)을 제공하고 있습니다. SLA(서비스 수준 계약) Q: Amazon EC2 서비스 수준 계약에서 보장하는 내용은 무엇입니까? SLA는 리전 내 Amazon EC2 및 Amazon EBS에 대해 최소 99.99%의 월간 가동률을 보장합니다. Q: SLA 서비스 크레딧 자격에 부합하는지 어떻게 알 수 있습니.. -
Java & Scala sbt 실행시 '/modules/java.base/java/lang/String.class' is broken 이슈 해결 방법 sbt를 실행했을 경우 아래와 같은 에러가 발생하였습니다. 위 에러는 java13을 사용하기 때문에 발생하는 오류인데요. 공식 sbt download 홈페이지에서도 이 에러에 대해 처리하는 방법에 대해 자세히 나와 있습니다. ⚠️ Homebrew maintainers have added a dependency to JDK 13 because they want to use more brew dependencies (brew#50649). This causes sbt to use JDK 13 even when java available on PATH is JDK 8 o.. -
AWS elasticbeanstalk + route53 으로 SSL(443) 접속 flask application 생성하는 가장 간단한 방법 elasticbeanstalk와 route53을 통해 443이나 SSL 설정을 하지 않은 Flask application을 route53을 통해 접속할 수 있도록 설정 할 수 있습니다. 준비물 - AWS 계정 - route53으로 등록된 DNS 1개 1. ACM 인증서 등록 ACM(AWS Certificate Manage)을 통해 aws에서 무료 ssl 인증서를 등록할 수 있습니다. 2. elasticbeanstalk 설정 443 ssl 설정을 하지않은 flask에 ssl을 연동하기 위해서는 아래와 같은 형태로 작업할 수.. -
nosql pymongo - find결과로 나온 데이터의 ObjectId()를 string으로 변경하기 def getSpecificId(id): result = objectIdDecoder(list(collection.find({"_id": ObjectId(id)}))) return str(result) def objectIdDecoder(list): results=[] for document in list: document['_id'] = str(document['_id']) results.append(document) return results pymongo를 통해 collection을 find한 다음 받은 ObjectId는 유효한 json type이 아니다. 그러므로 json형태로 사용할 경우에는 ObjectId를 String으로 변환.. -
일상 에어비엔비 CEO가 Airbnb직원들에게 보낸 메일 오늘 airbnb 전직원의 email함에는 CEO가 보내는 메일이 들어왔습니다. 현재 airbnb가 처해진 부정적인 상황과 이에 따른 조치(25% 직원 해고), 그리고 이에 따른 airbnb의 보상(지원)절차에 대한 내용입니다. Global 유니콘기업이 한순간의 상황으로 인해 1/4의 직원을 해고조치할 수 밖에 없는 상황을 자세히 공유하였습니다. 창업자로서 같이 일했던 소중한 직원을 보내야 할 수 밖에 없는 매우 슬픈 상황을 이 메일에서 확.. -
책 리뷰 실리콘 벨리와 엔지니어, 유튜브 창업이야기 - [유튜브 이야기] 독후감 유튜브 창업주 중 한명인 스티브 첸의 유튜브 창업이야기를 담은 책, [유튜브 이야기]를 읽었습니다. 최근에 유튜브 개발자 채널(데브원영)을 개설하고 컨텐츠를 만들면서 유튜브라는 플랫폼이 어떻게 만들어졌는지, 유튜브 플랫폼의 미래는 무엇인지 궁금하여 찾아 본 책입니다. 유튜브 이야기 언론에 알려진 유튜브 대박의 비밀은 사실이 아니라는데…?전 재산 200달러 시작한 그가 20개월 만에 2조원을 벌었다?카드로 서버.. -
Kafka Kafka-client client.dns.lookup 옵션 정리 Kafka-client 2.1.0 이후 버젼에서는 client.dns.lookup옵션을 사용하여 dns관련 설정을 사용할 수 있습니다. 오늘 포스팅에서는 해당 옵션이 어떤 역할을 하고 어떻게 동작하는지 알아보도록 하겠습니다. 먼저, apache kafka document의 설명을 보도록 하겠습니다. client.dns.lookup document client.dns.lookup: Controls how the client uses DNS lookups. If set to use_all_dns_ips then, when the lookup.. -
일상 MX MASTER 2s - 맥북에 알맞는 Logitech Option 옵션 설정 MX MASTER과 MX MASTER 2s를 사용하고 있습니다. 맥북을 사용하는 입장에서 이 많은 버튼을 어떻게 설정해서 사용해야 효과적일지 고민됩니다. 저는 저만의 옵션을 찾았고 아래와 같은 버튼을 기능에 mapping하여 사용중에 있습니다. 맥북을 사용하시는 분들에게 유용한 컨텐츠가 되었으면 좋겠습니다. 먼저, 마우스 기본 설정 중 상단 버튼은 아래와 같이 설정하였습니다. 휠 버튼을 클릭하게 되면 맥북의 데스크탑이 보이도록..
인기글
-
AWS AWS MSK(Kafka) 실습 및 예제 코드(Java), 장단점, 가격 Amazon MSK(Managed Streaming for Apache Kafka)는 AWS에서 제공하는 완전 관리형 apache kafka 서비스입니다. 기존에 on-promise에서 사용하던 혹은 EC2로 관리하던 Apache kafka를 SaaS형태로 사용할 수 있습니다. Apache kafka의 특정 버젼을 그대로 사용할 수 있기 때문에 vanila apache kafka의 버젼별 api spec을 따라서 사용할 수 있습니다. 그럼 이번 포스트에서는 AWS MSK cluster를 직접 구성해보고, producer/consu.. -
개발이야기 개발자 유튜버, 구독자 1000명 달성까지의 여정. 그리고 수익창출 2020년 3월 11일 이날은 제가 운영하고 있는 개발 유튜브(데브원영 DevWonYoung)의 구독자 1000명🎉을 달성한 날입니다. 개발관련 영상을 본격적으로 올린지 214일만인데요. 오늘 포스팅에서는 개발 유튜브를 하면서 느낀점에 대해서 이야기해보려고 합니다. 사실, 18년 여름에 Grafana를 소개하는 영상을 올린적이 있었지만 그 당시에는 편집도 서툴렀고, 어떻게 사람들에게 내용을 잘 전달할 수 있을지 크게 고민을 하지 않았.. -
AWS AWS kinesis Firehose 실습 및 예제 코드(Java), 장단점, 가격 실시간으로 비디오 및 데이터 스트림을 손쉽게 수집, 처리 및 분석 솔루션 Amazon Kinesis를 사용하면 실시간 스트리밍 데이터를 손쉽게 수집, 처리 및 분석할 수 있으므로 적시에 통찰력을 확보하고 새로운 정보에 신속하게 대응할 수 있습니다. Amazon Kinesis 기능 - Kinesis Video streams : 비디오 스트림을 캡처 처리 및 저장 - Kinesis Data streams : 데이터 스트림을 캡쳐, 처리 및 저장 - Kinesis Data firehose :.. -
AWS AWS kinesis Data stream 실습 및 예제 코드(Java), 장단점, 가격 실시간으로 비디오 및 데이터 스트림을 손쉽게 수집, 처리 및 분석 솔루션 Amazon Kinesis를 사용하면 실시간 스트리밍 데이터를 손쉽게 수집, 처리 및 분석할 수 있으므로 적시에 통찰력을 확보하고 새로운 정보에 신속하게 대응할 수 있습니다. Amazon Kinesis 기능 - Kinesis Video streams : 비디오 스트림을 캡처 처리 및 저장 - Kinesis Data streams : 데이터 스트림을 캡쳐, 처리 및 저장 - Kinesis Data firehos.. -
Java & Scala DateTimeFormatter에서 년도표시에 yyyy대신 uuuu를 사용해야하는 이유? DateTimeFormatter는 Java에서 datetime을 표시할때 가장 많이 사용하는 코드중 하나입니다. 보통 아래와 같은 코드로 표기하여 사용하는데요. LocalDate m = LocalDate.of(2018,12,31); String str = m.format(DateTimeFormatter.ofPattern("yyyy-MM"); //2018-12 선언한 pattern에 따라 LocalDate가 변경되어 String으로 반환되는 모습을 볼 수 있습니다. 위 pattern은 아래와 같은 특징을 가지는데요. 위 특징에 따라 보통.. -
Kafka 스파크 스트리밍-Kafka Data source 소개 KafkaSource는 스파크의 Structured Streaming에서 Apache kafka를 data source로 사용하기 위한 목적이다. 이 library의 source는 아래에서 확인할 수 있다. Spark Kafkasource : https://github.com/apache/spark/blob/master/external/kafka-0-10-sql/src/main/scala/org/apache/spark/sql/kafka010/KafkaSource.scala 2개의 핵심 function을 아래와 같이 정리할 수 있다. - getOffset() : KafkaOffsetrReader를 사용하여 가.. -
DevOps Grafana 알람 사용시 Image Renderer 사용 이슈 정리 그라파나는 모니터링 대시보드로 많이 쓰이는 웹 애플리케이션입니다. 다양한 기능을 제공하는데 그 중 하나는 Alert기능이 있습니다. 이 기능에는 graph이미지를 추가로 전송할 수 있는데, slack, email 등에 noti를 보낼때 매우 유용하게 사용할 수 있습니다. 이미지를 전달하기 위한 Redering은 grafana의 Grafana Image Renderer플러그인이 chromium(headless browser)을 통해서 수행합니다. Grafana Image Renderer을 사.. -
Kafka AWS에 카프카 클러스터 설치하기(ec2, 3 brokers) 보통 테스트할때 맥북 또는 윈도우 컴퓨터의 1대 장비에 설치하곤하는데요. 고 가용성 테스트를 하기 위해서는 반드시 3대 이상의 클러스터를 설치해야 완벽한 카프카클러스터로서 테스트가 가능합니다. 또한 테스트가 아니더라도 운영을 위해 ec2에 설치하는 경우도 있습니다. 이번 포스트에서는 AWS에 카프카 클러스터(3대)를 설치해보겠습니다. 실행 목차 aws에 카프카 클러스터(3대)를 설치하기 위해서는 아래와 같은 단계.. -
Programming Language Python AES 암호화하기(AES/CBC/PKCS5Padding) Python으로도 암호화를 손쉽게 할 수 있습니다. 이번 포스팅에서는 AES/CBC/PKS5Padding으로 암호화 하는 Python code를 보여드리겠습니다. 먼저 필요한 module은 아래와 같습니다. from Crypto.Cipher import AES 위 모듈을 사용하기 위해서는 아래와 같이 pip를 통해 모듈을 설치해줍니다. $ pip install pycrypto 모듈 사이트 : https://pypi.org/project/pycrypto/ pycrypto Cryptographic modules for Python. pypi.org.. -
Kafka Kafka | MirrorMaker2 가 release되었습니다. MirrorMaker 2.0은 KIP-382로 등록되어 있던 주제였으며, 2018년 10월 12일에 최초로 jira(KAFKA-7500)가 생성되었습니다. release될 때까지 약 1년이 걸렸는데요. 이번 포스팅에서는 MirrorMaker2.0이 왜 나왔고, 어떤 기능을 포함하고 있는지 살펴보겠습니다. 개발동기 MirrorMaker1은 꽤 오랜기간 사용되어 왔지만 몇가지 이슈가 있었습니다. Legacy MirrorMaker1의 문제점: - Topic들이 kafka default configuration기준으로..
Hot posts
-
AWS AWS kinesis Firehose 실습 및 예제 코드(Java), 장단점, 가격 실시간으로 비디오 및 데이터 스트림을 손쉽게 수집, 처리 및 분석 솔루션 Amazon Kinesis를 사용하면 실시간 스트리밍 데이터를 손쉽게 수집, 처리 및 분석할 수 있으므로 적시에 통찰력을 확보하고 새로운 정보에 신속하게 대응할 수 있습니다. Amazon Kinesis 기능 - Kinesis Video streams : 비디오 스트림을 캡처 처리 및 저장 - Kinesis Data streams : 데이터 스트림을 캡쳐, 처리 및 저장 - Kinesis Data firehose :.. -
개발이야기 티스토리 블로그에 눈⛄내리게 하기! 간단한 Javascript, html 편집 티스토리블로그는 js, css, html 등 다양한 확장기능을 가지고 있습니다. 이러한 기능을 토대로 블로그를 더욱 멋지게 꾸밀 수 있는데요. 이번 포스팅에서는 블로그에 눈이 내리게 하는 효과를 적용하는 예제를 설명드리도록 하겠습니다. 준비물 준비물은 아래와 같습니다. 약간의 웹개발 지식과 시간을 약간 가미하여 눈내리는 블로그를 만들어 봅시다. - 티스토리 블로그 - 간단한 js, html 지식 - 5분 적용방법 1) snow.js.. -
Java & Scala 스레드풀(Thread Pool)이란? 종류, 설명 자바에서 스레드를 생성하고 제거하며, 다수의 스레드를 관리할 수 있도록 자바에는 java.util.concurrent.Executors 를 통해 스레드풀 기능을 제공하고 있습니다. public class Executors { public static ExecutorService newFixedThreadPool(int nThreads) { return new ThreadPoolExecutor(nThreads, nThreads, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue ()); } ... 스레드풀의 종류 - newFixedThreadPool : 주.. -
Kafka 카프카 장애대응 - Consumer offset 지정하기(by partition) 카프카 consumer로 입수를 진행하다보면 예상치 못하게 데이터가 중복입수 또는 유실될 가능성이 있습니다. - Kafka broker 이슈 - Network 이슈 - Consumer application 이슈 위와 같은 이슈가 발생했을 경우 이슈가 발생했던 시점보다 더 이전의 데이터부터 입수를 진행해야하는데 이때 offset을 지정해야합니다. offset을 지정하는 방법은 아래와 같습니다. 1) Consumer 생성 Consumer 생성은 재입수 하고자 하는 Consumer에.. -
개발이야기 개발자 유튜버, 구독자 1000명 달성까지의 여정. 그리고 수익창출 2020년 3월 11일 이날은 제가 운영하고 있는 개발 유튜브(데브원영 DevWonYoung)의 구독자 1000명🎉을 달성한 날입니다. 개발관련 영상을 본격적으로 올린지 214일만인데요. 오늘 포스팅에서는 개발 유튜브를 하면서 느낀점에 대해서 이야기해보려고 합니다. 사실, 18년 여름에 Grafana를 소개하는 영상을 올린적이 있었지만 그 당시에는 편집도 서툴렀고, 어떻게 사람들에게 내용을 잘 전달할 수 있을지 크게 고민을 하지 않았.. -
AWS AWS MSK(Kafka) 실습 및 예제 코드(Java), 장단점, 가격 Amazon MSK(Managed Streaming for Apache Kafka)는 AWS에서 제공하는 완전 관리형 apache kafka 서비스입니다. 기존에 on-promise에서 사용하던 혹은 EC2로 관리하던 Apache kafka를 SaaS형태로 사용할 수 있습니다. Apache kafka의 특정 버젼을 그대로 사용할 수 있기 때문에 vanila apache kafka의 버젼별 api spec을 따라서 사용할 수 있습니다. 그럼 이번 포스트에서는 AWS MSK cluster를 직접 구성해보고, producer/consu.. -
Java & Scala Java PermGen의 역사 오늘은 Java PermGen에 대해서 알아보겠습니다. PermGen은 JDK 1.7 이하 버젼에서 존재하였습니다. 이곳은 클래스 메타 데이터가 들어갈 곳인데, 이 공간의 크기는 예측하기가 어려웠습니다. 자바에서는 클래스의 메타데이터를 읽고 해당 메타데이터를 통해 객체를 생성할 수 있습니다. 클래스 메타데이터란? : 클래스의 이름, 생성정보, 필드정보, 메서드 정보 등 그 때문에 아래와 같은 에러가 종종 일어나곤 했습니다. java.. -
하둡 HDFS cilent 사용시 HA구성된 node 연결하기 HDFS client를 사용하여 hdfs data를 직접 접근하곤 합니다. // HDFS 설정 Configuration conf = new Configuration(); conf.set("fs.default.name", "hdfs://172.1.2.3:8020"); // FileSystem 설정 FileSystem dfs = FileSystem.get(conf); Path filenamePath = new Path("/data/test.txt"); System.out.println("File Exists : " + dfs.exists(filenamePath)); // Write data FSDataOutputStream out = dfs.create(filenamePa.. -
카테고리 없음 [Scala]dependency tree 확인할 수 있는 유용한 Plugin : sbt-dependency-graph Java에서 디펜던시 관리 도구로 maven 또는 gradle을 주로 사용합니다. 반면 Scala에서는 SBT를 사용하여 디펜던시를 관리하는데요. 디펜던시를 관리하다보면 일부 library가 하위 library를 추가로 import하면서 꼬이는 경우(동일 library에 n개 이상의 version 동시 import)가 있습니다. 이러한 경우 dependency를 찾기 매우 난감한데요. 이때 사용할 수 있는 좋은 plugin이 있어 소개드립니다. sbt-dependecy-graph ※ 이 plu.. -
Kafka Kafka-client client.dns.lookup 옵션 정리 Kafka-client 2.1.0 이후 버젼에서는 client.dns.lookup옵션을 사용하여 dns관련 설정을 사용할 수 있습니다. 오늘 포스팅에서는 해당 옵션이 어떤 역할을 하고 어떻게 동작하는지 알아보도록 하겠습니다. 먼저, apache kafka document의 설명을 보도록 하겠습니다. client.dns.lookup document client.dns.lookup: Controls how the client uses DNS lookups. If set to use_all_dns_ips then, when the lookup..