- 개발/관리도구
- What's ssh port forwarding and what's the difference between ssh local and remote port forwarding
- There's real reasons for Linux to replace ifconfig, netstat, et al
- 신규 Web 서비스시 고려해 볼 사항
- Quart is a Python asyncio web microframework with the same API as Flask.
- JavaScript Algorithms and Data Structures
- Linux Inside(eBook)
- Docker-based utility for testing network failures and partitions in distributed applications
- rom Java to Kotlin and Back Again
- Adobe Photoshop Source Code
- Why did I spend 1.5 months creating a Gameboy emulator?
- The future of AutoCAD
- Emulating The AT&T 3B2 Computer
- Production Readiness Checklist (for AWS)
- Source Code to the Digital Mars C and C++ compilers.
- Releasing the Eudora™ Email Client Source Code
- The death of “front-end developers”
- Learning Go’s Concurrency Through Illustrations
- Tearing apart printf()
- Microservices: A quick and simple definition
- CS50 Introduction to Game Development
- Steve Wozniak Talks Disk ][
- Shell Style Guide
- 유니크 아이디는 얼마나 길어야 하나?
- Ask HN: Amazon software engineers, how is the work culture now?
- What technical recruiters want from engineering candidates
- [그림 한장] System audit logging
- Build your own (insert technology here)
- Pyre: Fast Type Checking for Python
- The Evolution of C Programming Practices: A Study of the Unix Operating System 1973–2015
- Get more done at the Linux command line with GNU Parallel
- Configure DNS Over HTTPS in Firefox
- JVM Architecture 101: Get to Know Your Virtual Machine
- Kafka Streams - from the Ground Up to the Cloud
- The WebAssembly Revolution Has Begun
- Every major OS maker misread Intel's docs. Now their kernels can be hijacked or crashed
- CSE 392 - Programming Challenges
- ENERGY EFFICIENCY ACROSS PROGRAMMING LANGUAGES
- Why serverless computing is one of the biggest threats to containers
- “서버리스 컴퓨팅에서도 AWS가 강자” 심화되는 AWS 의존도에 주목하라
- Introducing extended line endings support in Notepad
- 개발 속도를 높여주는 소소한 팁 (Chrome)
- How Content Ignite successfully migrated to DigitalOcean in 2017
- Deploying PMM on Linode: Your $5-Per-Month Monitoring Solution
- Publishing JSON-LD for Developers
- A Recycled IP Address Caused Me to Pirate 390,000 Books by Accident
- Yubico and Microsoft Introduce Passwordless Login
- bash-handbook: bash 핸드북
- CEO Satya Nadella Gives the First Day Keynote at Microsoft Build 2018
- JMC Open Sourced!
- Announcing: MSVC Conforms to the C++ Standard
- 리눅스 서버 60초안에 상황파악하기
- 25th International Obfuscated C Code Contest (2018)
- Origins of the finger command
- Java’s Mysterious Interrupt
- Gitea - Git with a cup of tea - A painless self-hosted Git service.
- Some Common Concurrent Programming Mistakes
- AsyncIO for the Working Python Developer
- Learn Python Programming, By Example
- Ask HN: How long does it take you to learn a new language?
- Hello Qt for Python
- What SSH Hacking Attempts Look Like
- An introduction to Python bytecode
- Understanding the Limitations of HTTPS
- 고성능 서버/데이터베이스
- Web analytics at scale with Druid at naver.com
- MySQL 8.0: MVCC of Large Objects in InnoDB
- 클라우드 DNS의 장단점과 사전 점검 조건
- 340만 동접자 이후 서비스 다운 관련 사후 분석 내용
- Five Things You Probably Didn't Know About Amazon S3
- 샤딩은 어떻게 동작하는가 (How Sharding Works 번역)
- 칼럼 | 마침내 클라우드 DB의 시대가 열리고 있다
- 저가항공사 라이언에어, 전체 인프라를 AWS로 이전
- FlureeDB, A Practical Decentralized Database
- How to start a Go project in 2018
- ElasticSearch, OOM을 막아보자
- Amazon Aurora Backtrack – Turn Back Time
- Introducing Cloud Memorystore: A fully managed in-memory data store service for Redis
- Building a 120TB-daily data pipeline on DigitalOcean
- Introducing Updates for Load Balancers
- Speed Up MySQL with CPU Performance Virtualization
- How Binary Logs (and Filesystems) Affect MySQL Performance
- The beets blog: we’re pretty happy with SQLite & not urgently interested in a fancier DBMS.
토요일, 5월 26, 2018
[B급 프로그래머] 5월 4주 소식(개발/관리도구, 고성능 서버/데이터베이스 부문)
수요일, 5월 23, 2018
[B급 프로그래머] 5월 3주 소식(빅데이터/인공지능, 암호화폐/블록체인, 읽을거리 부문)
- 빅데이터/인공지능
- 수많은 데이터 사이언티스트들이 직장을 떠나는 이유는 무엇인가?
- Amazon Pushes Facial Recognition to Police. Critics See Surveillance Risk.
- 너무 속이기 쉬운 인공지능
- AI로 안전 강조한 웨이모 “자율주행 자동차, 두려움 해결이 과제”
- Rules of Machine Learning: Best Practices for ML Engineering
- Eigenvectors and Eigenvalues
- 딥러닝 분산 플랫폼, C3DL
- Inside a Self-Driving Uber
- Explaining the Unexplainable
- Google's New Voice Bot Sounds, Um, Maybe Too Real
- Carnegie Mellon Launches Undergraduate Degree in Artificial Intelligence
- What’s New in Azure Machine Learning?
- Back to the Future: Demystifying Hindsight Bias
- data-integration - A lightweight opinionated ETL framework, halfway between plain scripts and Apache Airflow
- '알파고의 아버지' 허사비스, 길 찾기 인공지능 개발
- Everything Google announced at its 2018 I/O developers conference
- Scalable and accurate deep learning for electronic health records
- Google I/O Recap: Turning self-driving cars from science fiction into reality with the help of AI
- Who’s Winning the Self-Driving Car Race?
- Visual Studio IntelliCode
- Fonts for Complex Data
- Pure Python vs NumPy vs TensorFlow Performance Comparison
- ML.NET is an open source and cross-platform machine learning framework for .NET.
- CS109 Data Science
- Self-driving car crash in Arizona: Red light runner hits Waymo van
- Google Cloud for Healthcare: new APIs, customers, partners and security updates
- “평창 오륜기 드론쇼, 미래 한국에서 나올 수 있을까요”
- Cognitive scientists define critical period for learning language
- 수학자는 어떻게 인공지능을 발전시키는가?
- "20년 前 500여 명이던 골드만삭스 트레이더, 지금 3명 남았다"
- GPU database
- Expanding our GPU portfolio with NVIDIA Tesla V100
- 인도네시아 바다 불법어선 1만척, 구글 AI가 물리쳤다
- 암호화폐/블록체인
- 기업용 이더리움 블록체인 표준 확정...속도-상호운용성에 무게
- 블록체인 난제 해결 : 생체인식으로 분실된 암호화 키 복구
- 이더리움 심사 중인 미 증권위, ‘상품 또는 증권’ 여부에 다른 ICO에도 영향
- Yes, HTC is working on a ‘blockchain phone’
- Blockchain Just Isn’t As Radical As You Want It To Be
- Token Sale Market Overview: Q1 2018
- Robinhood Aims to Rival Coinbase in Crypto With $363 Million Funding Round
- Bloomberg Partners Novogratz’s Galaxy Digital Capital To Release Crypto Benchmark Index
- New Report On Crypto Ownership Shows ‘Majority Of Early Adopters Already On Board’
- 문돌이도 이해하는 스팀 디앱 (DApp)의 세계
- The EOSIO StackExchange is Live in Private Beta — Time to get the Q&A going!
- ‘블록체인과 GDPR’ 상극일까, 공생 관계일까?
- 작업 증명에서 지분 증명으로… 변화하는 블록체인 기반 암호화폐 거버넌스 방식
- The First Version of Ethereum's Casper Upgrade Has Been Published
- David Marcus Leaves Messenger to Focus on Blockchain Within Facebook
- The first rule of being a woman in crypto is you do not talk about being a woman in crypto
- Every Google search results in CO2 emissions. This real-time data viz shows how much
- Blockchain Workbench by Microsoft
- 골드만삭스 비트코인 트레이딩센터 준비
- “It Never Was a Security”: Ethereum Under The Regulatory Spotlight
- The Long Game in Crypto: Why Decentralization Matters
- An Introduction to Crypto (Andersson Horowitz)
- Introducing EOSIO Dawn 4.0
- Telegram’s billion-dollar ICO has become a mess
- 월마트 부사장이 블록체인으로 ‘개종’을 한 이유
- 글로벌 칼럼 | 블록체인이 모든 것의 '해답'이 될 수 없는 이유
- '서비스로서의 블록체인' 내놓은 6개사는 어디?
- "3분기 연속 2천% 증가"··· 블록체인 전문가 인기 '상종가'
- 스팀잇 "올해 이더리움 ERC20 같은 토큰 발행 기술 공개"
- Major Automakers Aim to Bring Blockchain to Cars
- 글로벌 금융기업 ING의 블록체인팀이 특별한 이유
- GDPR, 기업 블록체인 데이터베이스에 된서리 될까
- Bank of America - Blockchain Data Storage Patent Released
- 읽을거리
- Every Cell in Your Body Has the Same DNA. Except It Doesn’t.
- NASA’s EM-drive is a magnetic WTF-thruster
- This physicist’s ideas of time will blow your mind
- There's a dark side to friendships at work
- 플래시카드디럭스(Flashcards Deluxe 4.13) 한글 매뉴얼 (2018 NEW)
- 화성 탐사선 ‘인사이트’가 캘리포니아로 간 까닭은?
- How Science Saved Me from Pretending to Love Wine
- Stop Trying To Memorize — A Good Book Will Change You
- Smartphone shipments fall 6.3% in Europe in Q1 2018
- The Moral Cost of Cats
- https://www.newyorker.com/magazine/2018/02/12/why-paper-jams-persist
- Mindfulness may have been over-hyped
- Why I Believe Printers Were Sent From Hell To Make Us Miserable
- The Subtle Sexism Of Your Open Plan Office
- SpaceX Test-Fires New Falcon 9 Block 5 Rocket Ahead of Maiden Flight
- All the human flaws and biases that prevent you from managing money better
- 미래 기억(prospective memory)과 나이
- How to Survive Your 40s
- NASA advisers say SpaceX rocket technology could put lives at risk
- Subscription hell - How not to do paywalls
- Genetic Adaptation to Cold Brought Migraines With It
- Our Approach to Employee Security Training
- Rulers of the world: read Karl Marx!
- The Mac gaming console that time forgot
- Akin's Laws of Spacecraft Design(필독)
- [책의 향기]성공한 CEO가 꿈꾼 ‘유토피아적 일터’의 실체
- Why Men Love War
- Why Silicon Valley can’t fix itself
- Kim Jong Un Was Funny, Charming, and Confident but Brought His Own Toilet
- 2018 reform of EU data protection rules
- 왜 우리는 관리역량을 과소평가하는가?(필독)
- 小程序에서 위챗의 야망을 보다.
- Can’t sleep? Tell yourself it’s not a big deal
- Alphabet Announces Internet Availability of Proxy Materials for its 2018 Annual Meeting of Stockholders
- 이 세대의 공부
- What it means to “Disagree and Commit” and how I do it.
- The Numbers Behind WeWork’s Growing Empire
월요일, 5월 07, 2018
[독서광] 카프카, 데이터 플랫폼의 최강자
오늘은 간만에 기술서적 관련 독후감을 올려드리겠다. 오늘의 주인공은 검토를 위해 출간에 앞서 미리 읽기는 했지만, 그래도 다시 한 번 시간을 투자해 정독한 <카프카, 데이터 플랫폼의 최강자 - 실시간 비동기 스트리밍 솔루션 Kafka의 기본부터 확장 응용까지>라는 책이다. 카프카는 방대한 데이터를 다뤄야하는 기업 환경에서 중추적인 역할을 맡은 고가용성/고성능/실시간 데이터 버스를 구축하기 위해 사용하는 오픈소스 소프트웨어로서 데이터 수집, 처리, 분석 파이프라인을 단순하게 만들어주는 일등 공신이다.
일반적인 엔터프라이즈 환경에서는 관계형 데이터베이스를 중심으로 데이터 파이프라인이 구축되었다. 여러 가지 다양한 경로로 들어온 데이터는 일단 관계형 데이터베이스에 저장한 다음에 상호대화식 질의(SQL) 실행이나 분석을 위한 배치 작업(stored procedure) 실행 방식으로 비즈니스 논리를 구현했다. 실시간 처리가 필요하면 데이터베이스에 다소 부담을 주는 트리거를 걸거나 폴링 방식으로 특정 기간 윈도우 내의 데이터를 조건에 맞춰 뽑아내는 방식을 사용했고, 별도의 전문 검색 엔진으로 데이터베이스 레코드를 피딩한 다음에 비정형 검색을 수행하기도 했다. 하지만 이러다보니까 점점 데이터베이스에 부담이 늘어나게 되었고 뭔가 새로운 기능을 추가할 때마다 주먹구구식으로 연결해야 하는 어려움이 생겼다. 하지만 최근에는 데이터 버스를 구축해 들어오는/생성되는 방대한 데이터를 흘리고, 필요할 때마다 데이터 버스에서 가져와서 처리하는 방식으로 아키텍처가 바뀌고 있다. 처음부터 데이터 파이프라인을 잘 구축해놓으면 수평 확장 방식으로 성능을 높이는 동시에 기능이 추가될 때마다 얼기설기 위태위태 저글링을 하는 대신에 데이터 버스에서 선을 하나 끌어오면 끝난다. 처리한 데이터 역시 다시 데이터 버스로 흘리면 다른 곳에서 사용이 가능해지므로 표준화된 데이터의 고속도로를 구축할 수 있다.
아파치 카프카는 위에서 설명한 멋진 아키텍처 설계가 가능하도록 도와주는 훌륭한 도구지만, 일반적인 큐와는 달리 성능과 확장성이라는 두 마리 토끼를 모두 잡으려다 보니 개념을 잡기도 어려울 뿐더러 설치하고 설정하기는 더욱 복잡한 문제가 있다. <카프카, 데이터 플랫폼의 최강자>는 바로 이런 어려움을 해소하기 위해 카프카 기초 개념과 설치 방법부터 시작해 카프카의 설계 원칙과 프로듀서/컨슈머 예제에 이어 운영에 필요한 기초적인 지침을 제공한다. 그리고 실제 데이터 버스를 구축하고 나서 응용하기 위한 몇 가지 방안을 제시한다. ELK 스택을 사용해 카프카로부터 받은 데이터를 검색하고 시각화하는 방법을 시작으로, 최근 뜨고 있는 스트리밍 처리를 위한 카프카 스트림즈 프로그래밍 방식에 이어 카파 아키텍처를 위한 KSQL 예제를 소개한다. 마지막으로 클라우드(GCP, AWS) 환경에서 제공하는 카프카와 유사한 서비스인 펍/섭과 키네시스를 비교하면서 카프카와 비교한 장단점을 일목요연하게 정리하고 있다.
이 책을 읽고 나면 처음부터 새롭게 설계하는 시스템에만 카프카를 적용할 수 있는지 아니면 현재 운영 중인 시스템에도 카프카를 도입해서 고도화가 가능한지 궁금해질 것이다. 물론 새로 아키텍처를 설계하면서 카프카를 도입하는 방식이 효율성과 확장성을 높일 수 있지만, 기존 레거시 시스템의 아키텍처를 데이터 파이프라인 방식으로 변경할 경우에도 카프카는 아주 멋진 해법을 제시한다. 일단 들어오는 데이터를 OLTP 방식으로 직접 관계형 데이터베이스에 INSERT하는 대신 카프카에 밀어넣고 나서 커넥터를 사용해 관계형 데이터베이스로 넣는 방법을 생각해보자. 검색 기능이 필요하면 관계형 데이터베이스가 아니라 카프카에서 커넥터를 연결해 검색 엔진으로 넣으면 되고, 빅데이터 분석이 필요하면 커넥터를 연결해 하둡으로 보내면 된다. 이런 식으로 하나둘씩 관계형 데이터베이스를 중심으로 연결된 구조를 데이터 버스를 중심으로 분리된 파이프라인 구조로 변경해나가면 어느 순간 고도화가 완료된 전체 시스템을 목격할 수 있을 것이다. Confluent와 협력사, 오픈소스 공동체들이 만든 다양한 Kafka Connect 목록을 보면 카프카를 활용해 만들 수 있는 엔터프라이즈 아키텍처가 머리 속에 그려지지 않을까?
결론: 데이터를 중심으로 돌아가는 아키텍처를 구축하기 위해 노력하는 아키텍트와 개발자라면 이 책을 읽어보면 속이 시원해질 것이다.
보너스: 카프카에 대해 잘 정리된 자료 두 가지를 소개한다.
EOB토요일, 5월 05, 2018
[B급 프로그래머] 5월 1주 소식(개발/관리도구, 고성능 서버/데이터베이스 부문)
- 개발/관리도구
- 윈도우 백업 시스템, 아직도 애플 타임머신을 따라잡지 못하는 이유
- NGINX Releases Open Source Web Server with Dynamic Configuration
- layerJS - UI composition & animation in pure HTML
- Bootstrap 4: Everything You Need to Know
- Adding BigInts to V8
- Google Maps Platform
- Small, fast library to create ANSI colored strings and codes. [go, golang]
- Open-sourcing gVisor, a sandboxed container runtime
- Microsoft Releases a "Windows Command Reference" For Over 250 Console Commands
- TIC-80 tiny computer 0.60.3
- Making art with SSH key randomart
- C Is Not a Low-level Language
- It’s COBOL all the way down
- You don’t need a CS degree to be a successful engineer, but it helps.
- I interviewed at five top companies in Silicon Valley in five days, and luckily got five job offers
- VS Code Extensions for Happier JavaScript Coding
- Golang library for reading and writing Microsoft Excel™ (XLSX) files.
- Lessons from Building Static Analysis Tools at Google
- ReLaXed - Create PDF documents using web technologies
- Python Exceptions: An Introduction
- The False Allure of Hashing for Anonymization
- Develop Your Development Experience
- mermaid - Generation of diagrams and flowcharts from text in a similar manner as markdown.
- Sustainable On-Call
- Competitive Programmer’s Handbook
- NHN엔터, ‘토스트 UI 캘린더’ 오픈소스로 공개
- Top 5 Best Jupyter Notebook Extensions
- What happens when you run `cp` on the command line?
- How long does it take to linear search 200MB in memory?
- Cloud Native Java Has A New Home: Jakarta EE
- Monitoring SRE's Golden Signals
- GitLab Web IDE Goes GA and Open-Source in GitLab 10.7
- Finding design errors before it’s too late
- [B급 프로그래머] (Quora) 구글 또는 아마존에 다니는 경력 개발자들이 가장 유용하다고 생각하는 자료 구조는?(본인이 쓴 글)
- 데브캣 스튜디오의 NDC2018 슬라이드 모음
- A look at terminal emulators, part 2
- A look at terminal emulators, part 1
- Google's "Director of Engineering" Hiring Test
- NDC 기사(퍼블릭)
- Top 10 Things To Do With GraalVM
- Notes on structured concurrency, or: Go statement considered harmful
- Monitoring Kubernetes (part 1)
- "자바 11 로드맵"에서 예상되는 새로운 기능
- 파이썬 생존 안내서 (자막)
- Announcing a single C++ library manager for Linux, macOS and Windows: Vcpkg
- So Long Last /8 and Thanks For All the Allocations
- zxcvbn - Low-Budget Password Strength Estimation
- Improved code caching
- INTRODUCTION TO APACHE SPARK WITH PYTHON
- Another reason why your Docker containers may be slow
- 훌륭한 목수(개발자)는 연장을 탓하지 않는다?
- Beta for Qt for WebAssembly Technology Preview
- Parsing JSON is a Minefield
- PCF Platform Monitoring with Prometheus and Grafana
- Let’s Synchronize Threads in Python
- Big Data Processing with Apache Spark – Part 1: Introduction
- Blind since birth, writing code at Amazon since 2013
- 2,000+ awesome hieroglyphs, coming soon to Unicode
- Thread Pools
- Best Practice: Should Not Block Threads
- Weekly Command: going over Git history with tig
- Mustard UI is a starter CSS framework that actually looks good.
- Inside the Linux boot process
- Proposed Schedule for JDK 11
- github learning lab's courses
- Why Software Estimation Is More Important Now Than Ever
- Create TUI on Python
- VS Code can do that?!
- Why I Deleted My IDE; and How It Changed My Life For the Better
- Tunna - Interactive bindshell over HTTP
- 23 JavaScript design patterns
- Mouthful is a self-hosted alternative to Disqus
- VIM AFTER 15 YEARS
- Java, max user processes, open files
- (Front End) Scroll to the future
- 고성능 서버/데이터베이스
- Cloud Database Features Comparison - Amazon RDS vs Google Cloud SQL
- Twitter is moving a portion of its infrastructure to Google Cloud
- gh-ost - GitHub's Online Schema Migrations for MySQL
- Apple Open Sources FoundationDB
- Salsify – A New Architecture for Real-time Internet Video
- A Look at MyRocks Performance
- Scaling a High-traffic Rate Limiting Stack With Redis Cluster
- Postgresql split - Only one DB node active
- Apache Kafka Best Practices
- Scripts of the presentation "Query Optimizer – MySQL vs. PostgreSQL"
- One Giant Leap For SQL: MySQL 8.0 Released
- f4: Facebook’s Warm BLOB Storage System
- RDB부터 검색엔진까지··· 내게 꼭 맞는 DB 고르기
- Ghostferry is a library that enables you to selectively copy data from one mysql instance to another with minimal amount of downtime.
- HTTP Analytics for 6M requests per second using ClickHouse
- How We Moved Our API From Ruby to Go and Saved Our Sanity