Archive

이 블로그 이전에 쌓아 온 기록들입니다.

WIKI 751편 · MEDIUM 10편 — 각 블로그의 RSS 에 공개된 글입니다. 제목을 누르면 원문으로 갑니다.

  • SPEC DRIVEN DEVELOPMENT WIKI

    스펙 주도 개발(SPEC DRIVEN DEVELOPMENT) 은 구현 코드보다 명세(Specification)를 먼저 정의하고, 그 명세를 기준으로 설계, 구현, 테스트를 진행하는 개발방식이다. 이렇게 작성된 "명세는 시스템이 만족해야하는 계약과 규칙의 SSOT" 이다.

  • PHILOSOPHY WIKI

    자신이 내린 결정과 결과물에 대해서는 논리적으로 설득이 가능해야 한다. 설계에 정답은 없다. 같은 시스템을 구현하더라도 엔지니어가 내린 설계 방향성에 따라 탄생한 코드 결과물은 각기 다를 수 있다. 따라서 본인만의 올바른 철학(PHILOSOPHY, 哲學) 이 중요하다고 생각한다.

  • Knowly WIKI

    Knowly 는 나를 위해 만든 서비스이다. 나는 평소에 내가 학습할 링크, 문구, 메모 등을 GitHub Repository 와 같은 곳에 별도 파일로 관리하고 시간이 될때 마다 해당 내용들을 살펴보면서 공부를 하고 있었다. 하지만 시간이 지날수록 학습 자료가 많이 쌓여 꾸준히 소화하지 못하는 문제가 발생한다.

  • Products WIKI
  • DIGITAL KEY WIKI

    Digital Key 란 차량 접근 인증에 사용되는 디지털 자격증명(Digital credentials used to authenticate access to the vehicle) 이다.

  • FUNDAMENTAL TESTING WIKI

    소프트웨어 엔지니어링에 있어서 테스트는 AI 시대에 더욱 중요한 가치가 되었다.

  • SCALABLE STREAMING PLATFORM WIKI

    확장 가능한 양방향 스트리밍 플랫폼을 만들기 위한 반드시 알아야할 본질 에 대해서 정리 한다.

  • GO FUNDAMENTALS WIKI

    Go 는 Google 에서 2009 년에 공개한 시스템 프로그래밍 언어이다. Rob Pike, Ken Thompson, Robert Griesemer 가 설계했으며, 핵심 설계 철학은 simplicity 이다.

  • DPKI WIKI

    Asymmetric Cryptography 는 서로 다른 두 개의 키(공개키, 개인키)를 사용하는 암호화 방식이다. 공개키로 암호화한 데이터는 개인키로만 복호화할 수 있고, 개인키로 서명한 데이터는 공개키로 검증할 수 있다.

  • GRPC FUNDAMENTALS WIKI

    RPC(Remote Procedure Call) 는 네트워크 상의 다른 컴퓨터에 있는 함수를 마치 로컬 함수처럼 호출하는 기술이다. 이 아이디어는 1984년 Birrell과 Nelson의 논문 "Implementing Remote Procedure Calls"에서 처음 체계화되었다.

  • Never Trust the Network Designing Ordered Systems WIKI

    TCP Byte-Stream Ordering

  • Consistent Hashing WIKI

    Consistent Hashing 은 분산 시스템에서 데이터를 여러 노드에 분배하는 기법으로, 노드의 추가 또는 제거 시 재분배되는 키의 수를 최소화하는 것이 핵심 목표이다.

  • Symmetric Encryption WIKI

    AES(Advanced Encryption Standard) 는 2001년 NIST(National Institute of Standards and Technology)가 FIPS 197로 표준화한 대칭키 블록 암호 알고리즘이다. 벨기에 암호학자 Joan Daemen과 Vincent Rijmen이 설계한 Rijndael…

  • SUSPEND MECHANISM WIKI

    Kotlin Coroutine 의 suspend 함수는 비동기 코드를 동기 코드처럼 작성할 수 있게 하는 핵심 메커니즘이다. 그런데 "suspend 함수가 non-blocking 으로 동작한다"는 말은 정확히 무엇을 의미하는가?

  • Gossip Protocol WIKI

    Gossip Protocol 은 분산 시스템에서 노드 간 정보를 전파하기 위한 통신 프로토콜이다. 사람들 사이에서 소문이 퍼지는 방식과 동일한 원리로 동작한다. 각 노드는 자신이 알고 있는 정보를 무작위로 선택한 소수의 이웃 노드에게 전달하고, 그 이웃 노드들이 다시 자신의 이웃에게 전달하는 과정을 반복한다.

  • KAFKA FUNDAMENTALS WIKI

    Apache Kafka 는 분산 이벤트 스트리밍 플랫폼이다. 높은 처리량(Throughput), 내구성(Durability), 수평 확장성(Horizontal Scalability) 을 동시에 달성하기 위해 설계된 아키텍처를 가지고 있다.

  • Docker, Kubernetes WIKI

    컨테이너와 가상머신의 근본적인 차이는 운영체제 커널을 공유하는가 에 있다.

  • EVENTUAL CONSISTENCY WIKI

    Eventual Consistency 는 분산 시스템에서 가용성(Availability) 과 분할 내성(Partition Tolerance) 을 확보하면서도 데이터 일관성을 포기하지 않기 위한 일관성 모델이다.

  • MQTT WIKI

    Message Queuing Telemetry Transport

  • TESLA SIGNED COMMAND PROTOCOL WIKI

    Tesla 는 2023년부터 차량 제어 명령에 대해 End-to-End Command Authentication 을 도입했다. 이 프로토콜은 Tesla 의 공식 저장소에서 "vehicle-command" 로 명명되어 있으며, 본 문서에서는 이를 "Signed Command Protocol" 이라는 설명적 명칭으로 표기한다…

  • DeFi WIKI

    DeFi 는 기존 금융 서비스(e.g 예금, 대출, 환전 등)를 탈중앙화된 방식으로 구현한 시스템이다. DeFi 는 스마트 계약을 통해 자동으로 금융 로직을 수행한다. 예를 들어, 스테이킹 서비스에서는 일정 토큰을 예치하면 보상이 자동으로 지급된다. 이러한 자동화는 스마트 계약 덕분에 가능하다. 조건(담보율, 이자율, 만…

  • Decentralized Identifiers, Zero-Knowledge Proof WIKI

    블록체인과 암호기술의 발전은 디지털 신원(Digital Identity) 을 근본적으로 재정의하고 있다. 그 중심에는 DID(Decentralized Identifier, 탈중앙 식별자) 와 영지식 증명(Zero-Knowledge Proof, ZKP) 이 있다.

  • Demystifying Passkeys; CTAP MakeCredential and GetAssertion WIKI

    Passkey, FIDO, TrustZone, Trusted Execution Environment, Seed Vault

  • RWA WIKI

    RWA(Real World Asset)는 부동산, 미술품, 금과 같은 실물 자산을 블록체인상에서 토큰화하고, 이를 스마트 계약을 통해 거래 및 소유권 이전이 가능하도록 만든 개념이다. 예를 들어 아파트 한 채를 토큰 1,000개로 분할하면, 각 토큰은 해당 부동산의 지분을 나타낸다. 이 토큰을 스마트 계약을 통해 매매하거…

  • NFT WIKI

    NFT(Non-Fungible Token, 대체 불가능 토큰)는 블록체인 기술을 활용해 디지털 파일(그림, 영상, 음악 등)에 고유한 인식 값을 부여하여, 세상에 단 하나뿐인 원본임을 증명하는 '디지털 진품 증명서' 이다. 복제가 쉬운 디지털 세상에서 소유권을 명확히 하고 희소성을 보장하여 거래 가능하게 한다.

  • Web 3.0 WIKI

    Web 1.0 이 정보를 일방적으로 소비하던 초기 인터넷 시기 였다면, Web 2.0 은 사용자가 댓글을 달고 콘텐츠를 올리는 '참여의 시대' 였다. 그러나 그 참여의 결과물은 모두 플랫폼 기업의 자산이 되었다. 사용자가 만든 글, 사진, 영상 등 모든 데이터는 기업에게 귀속되었다.

  • Architecture Decision Record - API Gateway WIKI

    API Gateway 를 선택할 때 가장 보편적으로 논의하는 주제는 '구현할 것인가', '구입할 것인가' 이다. 보통 직접 구현하는 것보다 오픈 소스 구현체 또는 상용 솔루션을 구매하는 것이 더 낫다.

  • Hardware WIKI
  • Proof-of-Stake, Staking WIKI

    PoW(작업 증명)가 "에너지(전기)와 하드웨어" 를 담보로 잡고 보안을 유지한다면, PoS는 "자본(코인)" 자체를 담보로 잡는다.

  • BITCOIN NODE - Merkle Tree WIKI

    머클 트리(Merkle Tree)는 비트코인의 '압축 알고리즘'이다.

  • Agile Testing Matrix; Test Quadrants, Test Pyramid WIKI

    Specification by Example

  • TDD After TDD; How Developers Think in the Age of AI WIKI

    Claude Code, Gemini, ChatGPT 등 AI 를 활용한 Vibe Coding 이전 시절에는 TDD 를 활용하여 손으로 직접 코드를 구현하는 과정에서 얻는 인사이트가 있었다. 예를 들면, RED 과정에서 Deserialize 함수를 구현하기도 전에 테스트 코드에서 먼저 호출해 봄으로써 이 함수의 입력과 출력…

  • BITCOIN NODE - Transaction WIKI

    If Bitcoin were a living organism, transactions would be its heartbeat . Every action in the Bitcoin network—sending money, receiving money, mining rewards—is expressed as a transa…

  • Smart Contract WIKI

    스마트 컨트랙트(smart contract) 는 Nick Szabo 가 1990년대에 제안한 프로토콜 이름이다. 닉 사보는 디지털 환경을 잘 구성하면 변호사나 법무사 등의 제 3자가 개임하지 않고도 법률행위를 담은 계약이 자동으로 '집행'될 수 있을 것이라고 생각하고 이름을 '스마트 컨트랙트'이라 지었다.

  • Decentralization WIKI

    분산 시스템(Distributed System) 과 탈중앙화 시스템(Decentralization System) 은 공통점도 있고 차이점도 존재한다.

  • Bitcoin Address WIKI

    비트코인 지갑을 설치하면 제일 먼저 사용자를 위한 두 개의 암호키(public key, private key)가 생성된다. 비트코인 탈중앙화 시스템이므로 개인키를 분실하거나 도난 당하면 문제를 해결할 방법이 없다.

  • The Mechanics of Blockchain WIKI

    블록체인은 어떻게 중앙 서버 없이 신뢰를 만들어 내는 걸까?

  • Double Spending Problem WIKI

    전산학 관점에서 BLOCKCHAIN 은 "익명의 비동기화 네트워크에서 발생하는 사건들을 중앙 서버의 관여 없이도 일관성 있게 순서를 정할 수 있는 장치"다. 이 순서를 정하는 것은 이중 사용(Double Spending) 문제와 직결된다.

  • PoW WIKI

    Proof Of Work, Hash Puzzle

  • cypherpunk WIKI

    사이퍼펑크(cypherpunk) 는 "컴퓨터 네트워크를 사용할 때 특히 정부기관으로부터 프라이버시를 보호하기 위해 암호화 기술을 사용하는 사람"을 의미한다.

  • Latency, Bandwidth WIKI

    빠른 사용자 경험(user experience)을 위해서는 속도가 중요하다. 빠른 속도를 내기 위해서는 여러가지 요소와 근본적인 제약사항에 대해 이해해야 한다. 비유적으로 먼저 설명하자면 대역폭은 수도관의 굵기(지름)이며, 레이턴시는 물이 수도관 끝에서 끝까지 이동하는 속도이다. 엔지니어링 관점에서 레이턴시를 더 세분화…

  • BITCOIN NODE - Double Hash WIKI

    Bitcoin Address, Genesis Block

  • BITCOIN NODE - Encoding VarInt WIKI

    비트코인 네트워크는 JSON 을 사용하지 않는다. 대신 바이너리 데이터를 TCP로 직접 주고받는다 . 이 과정에서 다음과 같은 문제가 발생한다.

  • BITCOIN NODE - Encoding Endian WIKI

    비트코인 네트워크에서는 HTTP 나 JSON 을 쓰지 않고 바이너리(Binary) 로 데이터를 TCP 로 직접 주고 받는다. 이때 모든 정수(Integer)는 Little Endian 으로 통신한다. (일부 네트워크 포트나 IP 는 Big Endian 이지만 대부분은 Little Endian) 이 도구 없이는 Versio…

  • BITCOIN NODE WIKI

    Bitcoin Node 를 구현하는 Toy Project 이다. 프로젝트의 본질은 비트코인 네트워크의 일원(Node)이 되는 것이다.

  • VarInt WIKI

    비트코인 블록체인에서 공간(space)는 곧 돈이다. 1MB(혹은 4M Weight)라는 한정된 블록 공간에 최대한 많은 트랜잭션을 담아야 수수료를 아끼고 처리량을 높일 수 있기 때문 이다. 그래서 비트코인은 정수를 표현할 때 고정된 8바이트(uint64)를 무작정 사용하지 않는다. 숫자의 크기에 따라 길이가 늘어났다 줄…

  • Byzantine Generals Problem WIKI

    Proof of Work, Distributed Consensus Problem

  • UTXO WIKI

    Unspent transaction output

  • Bitcoin Wallet, Bitcoin Address WIKI

    비트코인 지갑의 주요 역할은 다음과 같다.

  • Segwit Locking Script WIKI

    Bech32, Remove Transaction Malleability

  • Genesis Block, Coinbase Transaction WIKI

    000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f

  • Base58, Base58Check WIKI

    base 라는 의미는 값을 나타내는데 사용되는 문자 수를 의미한다. base2 는 0,1 이진수, base10 은 10진수, base16 은 16진수 0123456789abcdef 를 의미한다.

  • Checksum, Bitcoin Address WIKI

    비트코인 지갑 주소는 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa 처럼 복잡한 난수들의 집합으로 보인다. 만약 친구에게 돈을 보내려다 주소의 맨 마지막 글자 a를 b로 잘못 입력하면 어떻게 될까? 내 소중한 비트코인은 영원히 허공으로 사라지는 걸까? 다행히도 그런 일은 거의 발생하지 않는다. 바로 체크섬…

  • Merkle Tree, Merkle Proof WIKI

    머클 트리(Merkle Tree)는 비트코인의 '압축 알고리즘'이다.

  • Bitcoin - Block, Transaction, Bytes WIKI

    Block is Container for bitcoin transactions.

  • Satoshi WIKI

    Little Endian, Big Endian

  • Book WIKI
  • BLOCKCHAIN WIKI

    BLOCKCHAIN 의 정의는 비트코인 논문에서 언급되지도 않으며, 명확한 정의가 없기 때문에 저마다의 해석으로 정의하곤 한다.

  • TRADEOFF WIKI

    소프트웨어 아키텍처 선정, 구현, 시스템 설계 등 정답이 없는 과정에서 올바른 결정을 내리기 위해 근거와 논리를 가지고 균형을 고민하고 선택하는 과정은 엔지니어가 얻을 수 있는 낭만이자 즐거움이다.

  • The Lifecycle of a Network Packet in Linux WIKI

    eth0 is the traditional name for the first Ethernet network interface (wired) in Linux and Unix-like systems, representing the physical connection for network communication, but mo…

  • WebRTC WIKI

    Web Real-Time Communication

  • SOCKET, PROTOCOL WIKI

    SOCKET 을 정의할 수 있는 말은 너무 많다. 소켓 자체로는 다양한 Layer 에서 의미를 가지고 있는데, Network, OS 수준으로 소켓이라는 것을 정의하면 다음과 같다. 소켓은 특정 통신 프로토콜(TCP 또는 UDP)을 사용하여, 네트워크 상의 고유한 주소({IP:Port})와 결합된, 프로세스가 접근 가능한…

  • VPN WIKI

    Virtual Private Network

  • NAT WIKI

    Network Address Translation

  • Data Modeling WIKI

    Analysis Workloads, Relationship Modeling, Schema Design Pattern

  • A Deep Dive into Distributed Transactions; Patterns and Trade-offs in Practice WIKI

    Two Phase Commit, Try-Confirm/Cancel, Event Sourcing

  • SOFTWARE FUNDAMENTALS; CRITICAL THINKING & ABSTRACTION WIKI

    소프트웨어 엔지니어로서 중요한 두 가지를 뽑으라면 CRITICAL THINKING 과 ABSTRACTION 라고 생각하며, 뛰어난 소프트웨어 엔지니어는 문제를 깊이 이해하는 비판적 사고와 복잡함을 단순화하는 추상화 능력을 갖추고 있다.

  • DIGITAL TWIN WIKI

    디지털 트윈(Digital Twin) 기술은 물리적 완전한 디지털 복제본을 생성하여 실시간 모니터링, 예측 분석, 그리고 가상 테스트를 가능하게 하는 핵심 기술이다.

  • V2G WIKI

    내 전기차가 움직이는 발전소가 된다면? V2G는 'Vehicle-to-Grid' 의 줄임말로, 단어 그대로 '자동차에서 전력망으로' 전기를 보낸다는 의미이다. 전기차를 단순한 이동 수단을 넘어, 필요할 때 전기를 공급할 수 있는 '움직이는 에너지 저장 장치(ESS)' 처럼 활용하는 기술이다.

  • NETWORK DESIGN PRINCIPLE WIKI

    Architecting Digital Highways for Data Packets

  • Chapter7 - Practical TDD Strategies in Legacy code WIKI

    "Legacy code is code without tests… but that doesn't mean we have to live with it forever." - Michael Feathers

  • Chapter6 - Refactoring and Test Evolution WIKI

    "Refactoring is a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior." - Martin Fowler

  • Chapter5 - Complex business logic TDD improved WIKI

    "복잡성을 다루는 가장 좋은 방법은 점진적으로 이해를 넓혀가는 것이다."

  • Chapter4 - Driving OOP, DDD, DESIGNPATTERN design with TDD WIKI

    "Objects are not just bundles of data and functions. They are models of concepts in your domain." - Eric Evans

  • Chapter3 - Test Design Principle WIKI

    "Code without tests is bad code. It doesn't matter how well written it is; it doesn't matter how pretty or object-oriented or well-encapsulated it is. With tests, we can change the…

  • Chapter2 - First TDD Experience Position Class Implementation WIKI

    "Make each program do one thing well." - Unix philosophy

  • Chapter1 - What is Test-Driven Development WIKI

    TDD(Test-Driven Development)는 개발자가 프로덕션 코드를 작성하기 전에 요구 사항에 집중하여 새로운 기능에 대한 테스트 시나리오를 먼저 생각하고 작성하게 한다. 작성된 테스트 시나리오를 기반으로 테스트 코드를 작성하고 테스를 실행하여 실패 하는 것을 확인한다. 그리고 테스트를 통과 하기 위한 가장 간…

  • Forward Compatibility, Backward Compatibility WIKI

    상위 호환성 - "미래를 대비하는 설계"

  • TDD KNIGHT WIKI

    TDD KNIGHT 는 Chess Game Engine 을 TDD 로 구현하면서 얻은 INSIGHT 를 AI 를 활용하여 책 처럼 풀어 쓴 글입니다.

  • What is the Software Defined Vehicle? WIKI

    Software Defined Vehicle 는 자동차의 물리적 구성요소와 디지털 구성 요소가 분리되고 차량의 기능을 소프트웨어로 제어할 수 있다. 마치 스마트폰 처럼 소프트웨어를 통해 기능과 성능을 지속적으로 개선하고 확장할 수 있다는 특징이 있다. 즉, 도로위의 스마트폰 이다. 자동차가 SDV 로 전환되면서 사이버 보…

  • Software Regression WIKI

    A software regression is a type of software bug where a feature that has worked before stops working. This may happen after changes are applied to the software's source code, inclu…

  • Some drawbacks of component teams, Alternative is Feature Team WIKI

    What is sometimes not seen is that a component team structure reinforces sequential development (a ‘waterfall’ or V-model), with many queues with varying-sized work packages, high…

  • Why Randomized Exponential Backoff Is Essential for Distributed Systems WIKI

    Exponential Backoff 는 is a common strategy for handling retries of failed network calls.

  • window system WIKI
  • Vector Embedding WIKI

    Vector 는 크기와 방향을 동시에 가지는 수학적 구조를 의미한다.

  • How Spring Brings Object-Oriented Principles to Life WIKI

    스프링(Spring)은 자바 기반의 프레임워크로, Object Oriented Programming 의 원칙과 철학을 구현하고 실현하는 데 실질적인 도움을 준다. 스프링의 핵심 요소들이 객체지향에 어떤 도움을 주는지를 살펴보자.

  • Exactly-once processing strategy in an Event-Driven Architectures WIKI

    Producer Delivery, Message Delivery Guarantees

  • DIGITAL TREE WIKI

    A trie , also known as a digital tree or prefix tree , is a specialized search tree data structure used to store and retrieve strings from a dictionary or set.

  • SIGNED CERTIFICATES WIKI

    현실 세계에서 서명(署名, signature) 이란 계약서나 문서 하단에 직접 자신의 이름을 쓰는 행위를 의미한다. 서명은 위조가 어렵도록 본인만의 고유한 필체를 사용하거나 지장을 사용한다. 이는 본인이 확인했음을 증명하며, 책임을 진다는 의미가 있다.

  • NATURE WIKI

    As a software engineer aiming to commit to the profession for a lifetime, it is crucial to develop a strong foundation that transcends specific tools, languages, or trends. The fol…

  • Coupon Issuance System WIKI

    Common Used Redis Data Structure in Coupon Issuance System :

  • STREAM WIKI

    A stream represents data that is progressively produced over time. Unlike traditional batch processing where you work with finite datasets, streams deal with continuous, unbounded…

  • Postel's Law WIKI

    Robustness Principle

  • EVENT WIKI

    Event 는 특정 시점에 발생한 의미 있는 상태 변화나 행위를 의미한다. 그리고 다음과 같은 특징을 지닌다.

  • Command Query Responsibility Segregation WIKI

    CQRS 는 명령(Command)과 조회(Query)의 책임을 분리하는 아키텍처 패턴이. 전통적인 CRUD 모델에서 벗어나 데이터를 변경하는 작업과 데이터를 읽는 작업을 완전히 분리한다.

  • DISCOVERY WIKI

    DISCOVERY 는 '발견' 이라는 의미이다. Cloud Native 환경에서 DISCOVERY 가 어떤식으로 활용되는지 알아두면 많은 도움이 된다.

  • High Performance; Binary Packet Protocol WIKI

    How HTTP/2's Binary Foundation Transformed Web Communication Efficiency

  • Zero Trust Architecture WIKI

    Zero Trust Architecture 는 Never Trust , Always Verify(Continuous Verification) , Least Privilege , Dynamic Policies 원칙을 따른다. 즉, 어떤 요청이든, 인증과 권한 확인 전까지는 허용하지 않으며, 요청마다 데이터 소유자, 권한,…

  • CHAIN OF RESPONSIBILITY WIKI

    책임 연쇄 패턴은 프레임워크에서 사용하는 필터, 인터셉터, 플러그인을 개발하기 위해 사용된다.

  • OBSERVER WIKI

    Also Known As Dependents , Publish-Subscribe

  • Security WIKI
  • Distributed Messaging Queue WIKI

    Event Streaming Platform

  • Key Exchange WIKI

    키 교환(Key Exchange) 은 앨리스와 밥이 각각 가상키(공개키/개인키 쌍)를 생성하고 공개키를 서로에게 보낸다. 그 다음 앨리스는 밥의 공개 키와 자신의 비밀 키를 사용하여 공유 비밀(shared secret) 을 계산한다. 밥도 마찬가지다.

  • FLYWEIGHT WIKI

    A flyweight is a shared object that can be used in multiple contexts simultaneously.

  • The Core Of Cryptography WIKI

    다른 사람(및 그들의 공개 키)를 신뢰하고 확장하는 방법을 찾는 문제가 암호학의 핵심이다.

  • Proximity-Based Authentication WIKI

    장치 페어링(Device Pairing) 에서는 사용자 지원 인증(사람의 도움으로 장치 페어링) 을 주로 사용한다.

  • Digital Signature WIKI

    디지털 서명(digital signature, digital 署名) 은 송신자가 자신의 비밀키(private key)로 암호화한 메시지를 수신자가 송신자의 공개키(public key)로 해독하는 과정이다. 이때 공개키가 유출된다면 의도하지 않은 공격자에 의해 데이터가 복호화될 위험이 있지만, 디지털 서명은 데이터를 보호하…

  • COMPOSITE WIKI

    컴포지트 패턴을 이용하면 객체들을 트리 구조로 구성하여 부분과 전체를 나타내는 계층구조로 만들 수 있다. 이 패턴을 이용하면 클라이언트에서 개별 객체와 다른 객체들로 구성된 복합 객체(composite)를 똑같은 방법으로 다룰 수 있다.

  • SDV WIKI
  • FACADE WIKI

    퍼사드 패턴은 서브 시스템에 대한 통ㅇ합 인터페이스 세트를 제공하고, 하위 시스템을 더 쉽게 만들기 위한 상위 통합 인터페이스를 제공한다.

  • BRIDGE WIKI

    브릿지 패턴은 추상화(Abstraction)와 구현(Implementation)을 분리하여 독립적으로 확장할 수 있도록 설계하는 패턴이다. 즉, 하나의 클래스 계층에서 두 개의 개념을 분리하여 결합도를 낮추고 확장성을 높이는 것이 목적이다.

  • ADAPTER WIKI

    The Adapter design pattern solves problems like:

  • DECORATOR WIKI

    PROXY 에 해당되며 부가기능을 추가 하는 것이 목적이다. Proxy 패턴은 원본 클래스와 관련이 없는 기능을 추가하는 반면, Decorator 패턴은 Decorator 클래스가 원본 클래스와 관련이 깊은 기능을 추가한다.

  • PROXY WIKI

    Provide a surrogate for another object to control access to it.

  • PROTOTYPE WIKI

    기존 객체를 복사(clone)하여 새로운 객체를 생성하는 방식의 생성(Creational) 패턴이다. 객체를 새로 생성하는 대신, 기존 객체를 복제하여 초기화 비용을 줄이고, 복잡한 객체 구조를 효율적으로 관리할 수 있다.

  • BUILDER WIKI

    Builder is a creational design pattern that lets you construct complex objects step by step.

  • FACTORY WIKI

    팩토리 패턴(Factory Pattern) 은 객체 생성을 캡슐화하여, 클라이언트 코드가 직접 객체의 구체적인 클래스를 알지 않아도 적절한 객체를 생성할 수 있도록 하는 디자인 패턴이다. 즉, "객체를 생성하는 책임을 별도의 팩토리 클래스나 메서드가 담당하는 패턴" 이다.

  • Software Architecture Lifecycle Activities WIKI

    Requirements, Design, Documentation, Evaluation, Implementation

  • Type Driven Architecture WIKI

    In a programming language like F#, types play a key role , so let's look at what a functional programmer means by type .

  • Decision Making Principles WIKI

    Design is the process of making decisions.

  • DECOUPLING WIKI

    대규모 리팩토링(시스템, 모듈, 코드 구조, 클래스 간 관계 등의 리팩토링)의 목적은 DECOUPLING 이다. 소규모 리팩터링은 가독성 개선이 목적이다.

  • Law of Demeter WIKI

    LoD(Law of Demeter) 는 최소 지식의 원칙(the least knowledge principle) 이라고도 한다. 최소 지식 원칙은 모든 유닛이 자신과 매우 밀접하게 관련된 유닛에 대해서 제한된 지식만 알아야 한다.

  • Minimalist Concepts WIKI

    Minimalist Concepts 는 IT 분야에서 단순성과 본질 에 집중하는 철학을 의미한다. 이는 불필요한 복잡성을 제거하고, 핵심 가치를 유지하면서 효율적이고 명확한 시스템을 구축하는 데 초점을 둔다.

  • Functional Object WIKI

    Functional Object 설계의 핵심 중 하나는, 항상 새로운 객체를 생성하는 것이다. 변경 불가능한 객체는 시간에 따라 변하는 상태 공간을 갖지 않아서, 추론이 쉽다. 객체 전달이 자유롭다. 상태를 갖는 변경 가능한 객체는 코드의 다른 부분에 전달하기 전에 복사를 해놓는 등의 방어조치가 필요하다. 변경 불가능한…

  • Writing Effective Comments for Readability and Maintainability WIKI

    클래스, 함수, 변수 등에 주석을 잘 다는 것은 코드의 가독성과 유지보수성을 높이는데 많은 도움이 된다.

  • Optimistic Concurrency Control; Optimistic Locking WIKI

    낙관락은 데이터에 대한 락을 실제로 걸지 않고, 트랜잭션이 끝날 때 버전 정보(version)를 확인하여 충돌 여부를 판단한다. 여러 클라이언트가 동시에 작업을 시도할 때 경쟁 조건을 해결하는 방법 중 하나이다. (타임 스탬프를 활용하기도 하는데, 시간은 지속적으로 흐르기 때문에 부정확할 가능성이 더 크다.)

  • Agile WIKI
  • INTERFACE WIKI

    Interface Programming 에 대한 내용은 1995 년에 등장한 Java 보다 먼저 나온 사상으로 추상적이고 일반화된 설계 사상이다. 1994년 에 출판된 «GoF, Design Patterns: Elements of Reusable Object-Oriented Software (1994)» 에서 처음 등장했…

  • Don’t Mock What You Don’t Own WIKI

    Don’t Mock What You Don’t Own 는 내가 소유하지 않은 것을 Mocking 하지 말라는 의미인데, TestDoubles 의 주요 가치가 Design Feedback 이라는 사고방식에서 나온 것이다. 예를 들어 무언가를 위조하기 위해서 고통이 수반된다면, 더 나은 테스트더블 라이브러리를 사용하는 것이…

  • Deep Dive Concurrency WIKI

    Concurrency 관련 Issue 해결을 위한 첫 번째 단계는 Shared Resources 를 이해하는 것이다.

  • Autowiring in Spring Integration Tests with Kotest WIKI

    testImplementation ( "org.springframework.boot:spring-boot-starter-test" ) testImplementation ( "io.kotest:kotest-runner-junit5:$kotestVersion" ) testImplementation ( "io.kotest.ex…

  • The Essence of Performance Testing WIKI

    성능 테스트는 시스템이 주어진 조건에서 얼마나 효율적이고 안정적으로 동작하는지 검증하는 과정이다. 이를 통해 시스템의 처리 속도, 안정성, 확장성, 그리고 자원 사용 효율성을 평가할 수 있다.

  • Design to Performance; Redis Single-Threaded Architectures WIKI

    Redis(Remote dictionary server) 는 High Performance Key-Value Based In-memory NoSQL Database 이다.

  • Token Introspection WIKI

    OAuth 2.0 Resource Server Opaque Token

  • Functional DistributedLock WIKI

    Concurrency Issue 해결을 위해서 Distributed Lock 을 사용하곤 한다. 보통은 AOP Based Distributed Lock 을 사용하는데 이 경우 Controller 의 Handler Method 에 @DistributedLock 어노테이션을 추가하여 전체적으로 적용된다.

  • K6 Performance Testing WIKI

    성능 테스트(Performance Testing)는 시스템, 애플리케이션, 또는 소프트웨어가 특정 조건 하에서 얼마나 효과적으로 작동하는지 평가하는 소프트웨어 테스트의 한 유형이다. 주로 응답 속도, 처리량(Throughput), 자원 사용량(Resource Usage), 안정성(Stability) 등과 같은 비기능적 요…

  • Little's Law WIKI

    Little's Law provides a fundamental formula for performance capacity:

  • Data Driven Workflows WIKI

    Orchestrating Kafka Events into Modular Tasks

  • Fire and Forget WIKI

    Fire and Forget 패턴은 Async Programming 에서 사용된다. 어떤 작업을 실행하고 그 결과에 대한 응답을 기다리지 않고 바로 다음 코드를 실행하는 것을 의미한다. 이 패턴은 주로 성능 향상이나 비동기 작업을 수행할 때 사용되며, 작업의 완료나 결과에 대한 처리가 필요하지 않을 때 유용하게 사용된다.…

  • Back-of-the-Envelope Estimation in System Design WIKI

    Understanding QPS, RPS, and Throughput for Effective System Design Interviews

  • AAA WIKI

    AAA(Arrange, Act, Assert) 의 목적은 테스트 케이스를 구조화 하여 테스트의 이해와 가독성을 높이는 것이다.

  • Message Inversion WIKI

    Message Inversion 은 생산된 이벤트의 순서와 소비된 이벤트의 순서가 일치하지 않는 현상을 말한다. 즉, A → B 순서로 발생한 메시지가 B → A 순서로 소비되는 상황을 의미한다.

  • Atomic instruction CAS to achieve synchronization WIKI

    Compare And Swap, ConcurrentHashMap

  • From Abstraction To Essence WIKI

    처음에는 잘 추상화된(abstracted) Framework, Programming Language 를 잘 사용하기 위한 공부 위주로 하게 된다. 나중에는 이 추상화 뒷면엔 어떤 본질이 숨겨져 있는지, 본질을 찾기 위한 공부를 해야 한다. 본질에 대한 공부는 내 머릿속에 점으로 이뤄진 파편화된 지식들을 선으로 이어주는 역…

  • Interface; Data Transfer Object, Business Object WIKI

    DTO does not have any behavior except for storage, retrieval, serialization and deserialization of its own data (mutators, accessors, serializers and parsers).

  • AI-Driven Modern Test Driven Development WIKI

    Kent Beck said "Immediate feedback for interface design decisions"

  • POINTER WIKI

    Pointer 를 이해하기 위해서는 Memory 에 대해서 이해할 필요가 있다.

  • vCard WIKI

    연락처를 공유할 때 vCard (.vcf) 형식으로 데이터를 내보낸다. vCard 는 이름, 전화번호, 이메일, 프로필 사진 등 필요한 정보를 포함할 수 있는 전자 명함의 세계 표준 파일 형식 이다.

  • Design Driven Testing WIKI

    Design Driven Testing 은 코드를 작성하기 전에 설계와 테스트 케이스를 먼저 작성하고 아래 테스트 유형을 사용하여 설계의 품질을 검증 하고, 테스트가 설계 결정과 설계 명세에 대한 문서화가 되도록 하는 개발 방법론이다.

  • Test Harness WIKI

    Test Harness 란 테스트를 실행하고 검증하는데 필요한 모든 요소들을 포함하는 테스트 실행 환경을 의미한다. 자동화 테스트 및 통합 테스트를 지원하며 관련된 도구로는 JUnit 등이 있다.

  • Deeplink WIKI

    딥링크(deeplink) 는 사용자를 특정 앱으로 이동시켜 원하는 화면을 보여주는 링크를 의미한다.

  • Force Push WIKI

    다음과 같은 상황에서 Force Push 를 사용하면 좋다.

  • XYZ WIKI

    시장 호응 가설(Market Engagement Hypothesis) 은 아이디어의 기본 전제와 그에 대한 시장 호응에 대해 우리가 어떤 기대를 하고 있는지 짧은 문장으로 표현한 것을 의미한다. 시장 호응 가설은 테스트 가능해야 하며 숫자로 표현 되어야 한다.

  • Cache Hierarchy; Why Cache Layers Exist Between CPU and Memory WIKI

    일반적인 시스템에서 Memory 의 속도는 CPU 100분의 1에 불과한다. CPU 는 한 번에 한 가지 일만 하기 때문에, CPU 가 명령어를 실행하는 속도를 끌어 올려야 성능이 향상될 것이다. 따라서, 더 이상 CPU 는 느릿느릿한 메모리와 직접 상호작용하지 않는다.

  • Data Beat Opinions WIKI

    의견 보다 데이터(Data Beat Opinions)는 구글의 핵심 운영 원칙 중 하나이다. 대부분의 사람들이 데이터라고 생각할 것도 구글에서는 데이터로 인정되지 않는다고 한다. 의사 결정 과정에서 고려되려면 데이터는 핵심 기준 몇 가지를 충족 시켜야 한다.

  • Principal WIKI

    Principal This interface represents the abstract notion of a principal, which can be used to represent any entity, such as an individual, a corporation, and a login id.

  • CALLBACK WIKI

    Callback Function 의 필요성은 Strategy Design Pattern 을 통해서 쉽게 알 수 있다.

  • Canary WIKI

    ' Canary ' 는 실제로 광부들이 유해 가스가 있는지 확인하기 위해 카나리아(작은 새)를 광산에 데리고 들어가던 방식에서 유래한 것이다. 카나리아가 먼저 유해 가스를 감지하고 쓰러지면, 광부들이 미리 위험을 감지할 수 있었기 때문에 이를 "테스트 군을 사용해 위험을 미리 감지" 한다는 의미로 소프트웨어 배포에 차용한…

  • Designing Context Structures for Suspend/Resume in Multitasking WIKI

    Concurrency in Modern Programming - From Processes to Coroutines

  • VirtualThread; Provide High-throughput not Low-Latency WIKI

    The thread is Java's unit of concurrency ;

  • DUPLEXING WIKI

    이중화(二重化, Duplexing) 란, 시스템 신뢰성을 올리기 위해 같은 기능을 가진 시스템을 두 개 준비하는 것 을 말한다.

  • BROADEN YOUR HORIZONS WIKI

    개발자로써 만 6년차를 앞두고, 사이드프로젝트를 찾아나섰다. 너무 만들고 싶은 제품이기도 했으며 직접 경험해본 도메인이고, 나에게도 필요하지만 사람들이 필요로하는 제품일 것이라는 확신이 든다. 이번에도 운이 좋았다. 좋은 사람들, 똑똑한 사람들과 함께 일한다는 것은 너무 즐거운 일이다.

  • rwlock WIKI

    Mutex 는 read lock 과 write lock 분리되어있지 않다. 하나의 lock 으로 읽기/쓰기 잠금을 모두할 수 있다. 하나의 쓰레드만 자원에 접근하도록 보장하는 잠금 방식이며, 단일 접근 제어에 사용된다.

  • Throughput and Latency understood by Delivery Services WIKI

    처리량(Throughput)과 지연시간(Latency) 를 이해하기 가장 쉬운 예시는 Delivery Services 생각해보면 된다. 대한민국의 대표 배달 앱 '배달의 민족'을 생각해보자. 알뜰 배달과, 한집 배달이 있다.

  • Debounce with Options - Leading, Trailing WIKI

    If trailing is enabled, the debounce will invoke after the delay just like classic implementation. If leading is enabled, it will invoke at the beginning. If both are enabled then…

  • FencedLock WIKI

    Distributed System 에서 Shared Resources 를 보호하기 위해 Distributed Lock Mechanisms 을 사용한다. 일반적으로 Redis 의 lock/tryLock 을 사용하는데, STOP THE WORLD 가 발생하는 경우에는 Lost Update(write-write-conflict…

  • DataDrivenTest WIKI

    Data Driven Testing 은 테스트를 수행할 때 입력 데이터와 예상 결과를 외부 소스(예: 엑셀 파일, CSV 파일, 데이터베이스, XML 등)에서 불러와 테스트 케이스에 적용하는 소프트웨어 테스트 기법이다. 또는 미리 정의된 입출력 값 Set 을 사용하여 동일한 테스트를 반복해서 빠르게 실행하는 것을 의미하기…

  • The History of Ventilation and Temperature Control WIKI

    사람들이 처음으로 실내에 불을 들여오면서 연기를 빼낼 구멍의 필요성을 인식했고, 환기의 필요성도 생겼다. 고대 이집트에서는 실내에서 작업하는 석공들이 야외에서 작업하는 사람들보다 호흡기 문제가 많았고, 이는 실내의 먼지 때문이라고 여겼다. 로마인들은 난방 시스템을 개발해 실내 화재의 필요성을 없앴고, 창문 면적에 따른 자…

  • WatchDog WIKI

    Watchdog Mechanism 은 시스템의 안정성과 신뢰성을 모니터링하고 유지하기 위한 감시 시스템입니다. 주로 시스템이 정상적으로 동작하는지 감시하고, 문제가 발생했을 때 적절한 조치를 취하는 역할을 한다.

  • Carrying Capacity WIKI

    Growth Dynamics 의 핵심 개념인 Carrying Capacity 는 제품을 만드는 PO, PM, Developer 들이 꼭 알아야 하는 개념이다. 이 값을 알면 우리 서비스가 도달할 MAU 를 예측할 수 있다.

  • Tests Enable of Fearless Refactoring WIKI

    In the world of software development, change is inevitable. As systems grow and evolve, so too must the code that powers them. This is where refactoring comes into play – the art o…

  • A Guide to IT Contracting - Checklists, Tools, and Techniques WIKI

    A Guide to IT Contracting - Checklists, Tools, and Techniques

  • CLEANCODE WIKI

    Maintaining a high level of code quality is an action close to the essence.

  • Mastering Developer's Guide to Seamless Social Logins WIKI

    Integrating Google, Apple, and Kakao with OpenIDConnect and OAuth

  • THE LAWS OF IDENTITY WIKI

    Technical identity systems must only reveal information identifying a user with the user's consent.

  • AWS Systems Manager WIKI

    AWS Free-Tier 를 사용하는 경우 아래와 같은 아키텍처로 EC2 & RDS 가 구성된다.

  • Three Questions to Build a Data Analysis Hypothesis WIKI

    Three Questions to Build a Data Analysis Hypothesis :

  • PageCache Centric Designs WIKI

    Don't fear the Filesystem!

  • Achieving Robust Control with the Desired/Actual State Pattern WIKI

    Spec and Status Patterns

  • ABSTRACTION WIKI

    ABSTRACTION 란 복잡한 자료, 모듈 시스템 등으로 부터 핵심적인 개념, 기능등을 간추려 내는 것을 의미한다. 이에 반대되는 개념인 명세화(specification) 는 일반적인 개념이나 추상적인 생각을 구체적인 사실로 분해하거나 분석하는 과정이다. 대표적으로 수학의 함수는 무수한 계산 과정을 한 기호로 추상화한…

  • ReplayAttacks WIKI

    ReplayAttacks 은 인증 과정에서 이전에 유효했던 데이터를 가로채서 나중에 이를 재사용함으로써 불법적인 액세스를 시도하는 공격이다. 주로 네트워크 환경에서 발생하며, 공격자는 인증 요청 또는 통신 데이터를 가로챈 후, 이를 그대로 재전송하여 합법적인 사용자로 가장할 수 있다.

  • LINUX WIKI

    Linux is an operating system kernel that provides memory management, file system abstraction, basic networking, and other essential services to an operation system.

  • Automotive Architectures WIKI

    Domain, Zonal and the Rise of Central

  • Quality of Service WIKI

    QoS(Quality of Service) is a mechanism to control the quality and performance of data transmission and processing in the data distribution service.

  • How to Implementation High Order Functions? WIKI

    A higher-order function is a function that takes functions as parameters, or returns a function.

  • CONNECTED SERVICE WIKI

    A connected service is a system that connects a vehicle to app to provide various functions and services.

  • Critical Thinking in the DNA of Software Engineers WIKI

    Critical thinking the awakening of the intellect to the study of itself.

  • Tx WIKI

    Tx 는 하나의 논리적인 작업의 단위 를 의미한다. 데이터베이스에 저장된 모든 데이터는 Integrity 하여야 한다. 그렇기 위해서는 시스템 장애가 발생하더라도 데이터를 신뢰할 수 있어야 하며, 동시(concurrently)에 데이터베이스에 접근하는 프로세스로 부터 격리를 제공해야 한다.

  • Provisioning WIKI

    Provisioning 은 시스템이나 서비스를 사용 가능한 상태로 설정하는 준비 과정을 의미한다. 예를 들어 차량(Vehicle)과 관련된 시스템/서비스를 개발하는 경우 차량이 사용 가능한 상태가 되어야 한다. 이것을 Vehicle Provisioning 이라 할 수 있다.

  • Cross-Origin Resource Sharing WIKI

    CORS(Cross-Origin Resource Sharing) 는 웹 브라우저에서 실행되는 스크립트가 다른 출처(도메인, 프로토콜, 포트)의 리소스에 접근할 수 있도록 허용하는 보안 메커니즘이다.

  • Backend For Frontend WIKI

    Backends for Frontends Pattern 이란 Architecture 를 Frontend Friendly 하게 변경하는 것을 의미한다.

  • Developer Experience WIKI

    개발자 경험(Developer Experience) 은 개발자의 업무 만족도와 생산성이 올라가기 때문에 중요하다. DevX 는 개발자 마다 다르기 때문에 주관적이다.

  • Trustworthy Conversations in the Digital Worlds WIKI

    Certificate Authority, Public Key Infrastructure, Asymmetric Cryptography

  • Functional testing of a user story, scenario WIKI

    Acceptance testing is user's perspective test

  • Discover Spring REST Docs API Enum Designs WIKI

    Spring REST Docs API 에서 사용된 Enum Design 이다.

  • Lambda with Receiver WIKI

    Higher-order functions and Lambdas

  • LOG MASTERING WIKI

    로그는 가장 단순하게 추상화된 저장소이며, Append-only 만 가능하고, 전체 이벤트가 시간 순서대로 정렬된 자료구조를 의미한다.

  • Strategies for Handling Network Blips; Ensuring Resilience in Distributed Systems WIKI

    Fault Tolerance; Retry Mechanism, Circuit Breaker, Timeout, Fallback, Graceful Degradation

  • Characterization Test WIKI

    Golden Master Testing(also known as Snapshot Test, Approval Test) is Testing Techniques Used When Refactoring LegacyCode

  • Defactoring WIKI

    Reducing Cognitive Load by Removing Unnecessary Abstraction

  • Password Encryption WIKI

    How to avoid Rainbow table attacks in Password encryption

  • Data-driven, Data-informed or Data-inspired WIKI

    비지니스에서 Data 는 강력한 무기가 될 수 있다. Data 를 활용하는 접근법으로는 크게 3가지가 있다.

  • DEPENDENCY WIKI

    A Dependency occurs when one component (the dependent) requires another component (the dependency) to perform its tasks.

  • Experience of Software Architectures WIKI

    Correlation between DomainPurity and Productivity, Protocol, Mixed Architectures

  • Integration Testing WIKI

    단위 테스트가 비지니스 로직을 테스트하기에는 좋지만, 시스템이 데이터베이스, 메시지 버스 등의 외부와 어떻게 통합되는지 확인하기에는 충분하지 않다. 따라서 통합 테스트가 필요하다.

  • Functional Architectures WIKI

    The Essence Of Diverse Architectures, Type Driven Development, Output Based Testing

  • DomainModel WIKI

    An object model of the domain that incorporates both behavior and data .

  • BLE Technology Driving Connected Car Innovation WIKI

    The Future of Efficient Vehicle Connectivity

  • Chatting System Design WIKI

    먼저 요구사항/기능을 잘 정의 해야 한다. 어떤 Chatting Application 인지에 따라서 요구사항과 기능이 완전히 다르다. 만약, 면접에서 두리뭉실하게 Chat Application System Design 을 해보라는 질문을 받는다면 목적 이 무엇인지를 명확하게 물어보면 좋을 것 같다.

  • Effective UnitTest WIKI

    좋은 단위 테스트의 특성은 아래와 같다.

  • Load Balancer WIKI

    Load Balancer - Scalable system design patterns :

  • Managed Service WIKI

    Managed Service 란 Authentication, Systems management, DB Backup and Recovery, Data storage, warehouse and management, Monitoring 등 에 대한 리소스 관리를 외부 공급업체(e.g AWS) 등에 위임하는 것을 의미한다. 직접…

  • Intuitive Naming WIKI

    코드를 작성할 때, 직관적인 이름 을 사용하는 것은 가독성을 높이는데 중요하다.

  • Fixtures WIKI

    Sharing Test Fixtures/Dependency

  • AWS WIKI
  • Error .. is not in std golang WIKI

    $GOPATH/go.mod exists but should not

  • DNS WIKI

    DNS(Domain Name System) 은 전화번호부와 같은 역할을 한다. '도미노 피자'와 같은 이름이 전화번호부를 통해 전화번호로 변환되는 것처럼 'www.google.com' 과 같은 웹 주소는 DNS 를 통해 '74.125.19.147'과 같이 실제 IP 주소로 변환된다. 이러한 Domain 에서 IP 로의 변…

  • Test Patterns For Standard Fixtures Reuse WIKI

    Object Mother, Test Data Builder, Fixture Monkey, EasyRandom

  • Callback Based Async Architecture WIKI

    Blocking Based System :

  • Detroit Versus Mockist WIKI

    단위 테스트에서는 고전파(Detroit) 와 런던파(Mockist) 로 나뉜다. 고전파의 대표적인 책은 Test Driven Development - Kent Beck 이며, 런던파의 대표적인 책은 Growing Object-Oriented Software, Guided by Tests - Steve Freeman 이 있…

  • Determining When to Apply Test-Driven Development WIKI

    Benefits, Drawbacks of TDD

  • Testability WIKI

    Production Code 를 설계할 때, 항상 테스트 가능성을 고려( Software Testability ) 해야 한다.

  • Design by Contracts WIKI

    A contract is a set of expectations on an element, library, or service. By “contract”, we mean what is "promised" by the creators of this solution in documentation, comments, or by…

  • CodeCoverage WIKI

    Test Coverage 는 테스트 코드가 프로덕션 코드를 얼마나 커버하는지를 의미하는 지표이다.

  • Content Delivery Network WIKI

    A Content Delivery Network(CDN) is a globally distributed network of proxy servers, serving content from locations closer to the user. Generally, static files such as HTML/CSS/JS,…

  • TestDoubles WIKI

    When to fake; when to mock

  • No Silver Bullet in Software Test WIKI

    Pesticide Paradox 은 벌레를 예방하고 잡으려고 사용하는 모든 방법은 그 효과가 미치지 않는 더 미묘한 벌레를 남긴다라는 의미이다. 소프트웨어 테스트에는 은 탄환은 없다( No Silver Bullet ). 따라서, 버그 수를 최소화하기 위해서는 모든 테스트 전략을 효과적으로 결합 하여 사용하는 것이 현명한…

  • PropertyBasedTest WIKI

    목록이 입력으로 주어질때, 요소의 순서가 알고리즘에 영향을 미치는 경우 일반적으로 예시 기반 테스트(Example-Based Test) 를 사용한다. 예시 기반 테스트란 가능한 입력 중에서 하나의 특정 입력만 골라서 하는 테스트 를 의미한다. 특정 테스트 케이스를 위해 데이터를 만들어서(data point) 테스트를 진행…

  • SpecificationBasedTest WIKI

    소프트웨어 요구사항(requirements) 은 어떤 기능이 무엇을 해야 하는지를 설명하는 텍스트 문서를 의미하며, 이것이 테스트를 작성함에 있어서 가장 중요한 요소이다.

  • Functions WIKI

    Currying, Partial Application

  • Exchange WIKI

    Delegation Semantics

  • RateLimit - 429 Too Many Requests WIKI

    API 로 요청/명령을 과도하게 하는경우 ' 429 Too Many Requests ' 또는 ' Limit Exceeded(한도 초과) ' 와 같은 응답을 받는 경우가 있다. 이 경우는 보통 API 에 RateLimit 이 걸려 있을 것이다.

  • Drawbacks of Distributed Lock WIKI

    분산 락을 사용하면 데이터가 특정 시간(락의 대기 시간(wait time)과 임대 시간(lease time))에 의존하게 된다. 따라서, 필수적으로 처리해야 할 데이터가 처리되지 않는 상황이 발생할 수 있다. 또한, 락이 해제될 때 두 개의 데이터가 락을 경합하면 순서대로 처리되지 않을 가능성도 있다.

  • Test Pyramid WIKI

    The "Test Pyramid" is a metaphor that tells us to group software tests into buckets of different granularity

  • Client Credentials Grant WIKI

    Client Credentials Grant 란 클라이언트의 자격증명만으로 Token 을 획득하는 방식을 의미한다.

  • Delegates WIKI

    Delegation Design Pattern :

  • HealthCheck WIKI

    Spring 과 K8S 를 사용하는 환경에서 애플리케이션이 사용 가능한지 상태 확인 을 위해서 Liveness, Readiness 개념을 적용하면서 Health Check Endpoint 를 Helm 에 설정하곤 한다.

  • Combined Charging System WIKI

    The Combined Charging System, or CCS , is one of three fast-charging plugs in the U.S. and it’s the most popular charging plug after Tesla with thousands of public stations through…

  • Divide Potential Errors WIKI

    Divide potential errors into 3 groups :

  • Point of Interest WIKI

    POI(Point of Interest) 란 지도 상에서 관심 지역 정보 를 의미한다. 강남역, 백화점, CGV 등 .. POI 를 지도에 사용하는 목적은 목적지를 쉽게 검색 할 수 있도록 하기 위함이다.

  • Persistence WIKI

    Data Persistence is a means for an application to persist and retrieve information from a non-volatile storage system

  • Don't use natural keys WIKI

    Vehicle identification number(VIN; also called a chassis number or frame number) 혹은 주민등록번호와 같은 자연키(natural key)를 데이터베이스의 기본키로 사용해서는 안된다. 아무리 국가 정책이더라도 정책은 변경 가능성을 내포하고 있기 때문이다.

  • Japanese WIKI
  • Keycloak WIKI

    Keycloak 은 Open Source 기반의 IAM(Identity and Access Management) 소프트웨어로 사용자에 대한 인증(Authentication)과 인가(Authorization) 관리기능을 국제 인증/인가 표준 프로토콜(OIDC, SAML, OAuth 2.0 등) 기반으로 제공한다.

  • Minimizing mental complexity WIKI

    Minimizing mental complexity - 정신적 복잡성, 인지 부하를 최소화 하는 가이드

  • The Log WIKI

    What every software engineer should know about real-time data's unifying abstraction

  • System Design WIKI
  • Device Authorization Grant WIKI

    OAuth 2.0 Device Authorization Grant 란, 디바이스 권한 부여를 의미한다. 브라우저가 지원되지 않거나, 장치의 키보드 입력 기능이 제한된 경우 OAuth 를 사용하여 장치에 로그인하는 데 사용된다.

  • Digital Twin WIKI

    디지털 트윈(Digital Twin) 이란 물리적인 물체를 정확하게 반영하도록 설계된 가상 모델을 의미한다. 쉽게 말하면, 현실 세계를 디지털 환경에 복제하는 기술 을 의미한다.

  • HMAC WIKI

    Hash Message Authentication Code

  • Domain Modeling WIKI

    Tackle Software Complexity with Domain-Driven Design and F#

  • Robotaxi WIKI

    Autonomous mobility on demand

  • QR Code WIKI

    How to implement QR Code Login Authentication Across Devices

  • Redis Queue WIKI

    우아한테크토크 선착순 이벤트 서버 생존기! 47만 RPM 에서 살아남다?!

  • Enhanced IP Addressing System WIKI

    Classless based IP Addressing System with Subnetting

  • Abstraction of the Linux message traffic path WIKI

    A way to speak to other programs using standard Unix file descriptors.

  • Open Container Initiative WIKI

    Container Runtime Interface

  • Key Aspects of scalable architectures WIKI

    Decentralization and Independence

  • Deadlock WIKI

    교착상태(膠着狀態, deadlock) 은 두 개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있기 때문에 결과적으로 아무것도 완료되지 못하는 상태를 의미한다.

  • Container Hierarchy WIKI
  • Benefits of test code WIKI

    테스트 코드를 작성했을때의 이점은 크게 3가지라고 생각한다.

  • Atlassian JIRA APIs WIKI

    Atlassian no longer supports Jira REST Java Client library. If you have any questions about it, post them in the Atlassian Community.

  • Abstracted Native by Wrapping WIKI

    Synchronized with Monitors described to OS level

  • Secure Shell WIKI

    Tunneling 은 데이터 스트림을 인터넷 상에서 가상의 파이프를 통해 전달시키는 기술을 의미하며, 패킷내의 데이터를 캡슐화 시켜서 전송한다. 터널링을 보안 채널이라고도 부른다.

  • SUT, DOC WIKI

    System Under Test and Depended On Component

  • Polymorphism WIKI

    Polymorphism is the provision of a single interface to entities of different types.

  • User feedback is important than premature optimization WIKI

    “The real problem is that programmers have spent far too much time worrying about efficiency in the wrong places and at the wrong times; premature optimization is the root of all e…

  • Feign Client Exception Handling with ErrorDecoder WIKI

    서버로 부터 받은 response 의 status 값에 따라 Feign Client Exception Handling 이 가능하다.

  • API Designs WIKI
  • Data Anonymization WIKI

    Data anonymization is the process of protecting private or sensitive information by erasing or encrypting identifiers that connect an individual to stored data.

  • Analyzing Inversion of Control WIKI

    Dependency Injection

  • Site Reliability Engineering WIKI

    Google Cloud - SRE fundamentals: SLIs, SLAs and SLOs

  • Security Attacks WIKI
  • Helm WIKI

    Helm is a tool for managing Kubernetes packages called charts

  • SchedulerLock WIKI

    Distributed 환경에서의 Scheduler 는 Job 이 여러 노드에서 동시에 실행될 수 있다.

  • Consumer Options Optimization Strategy WIKI

    실무 관점에서의 Apache Kafka 활용 :

  • Fetch Execute Cycle WIKI

    CPU 는 한 번에 한 가지 일만 할 수 있다.

  • Encapsulation WIKI

    In software systems, encapsulation refers to the bundling of data with the mechanisms or methods that operate on the data. It may also refer to the limiting of direct access to som…

  • Vehicle Controls WIKI

    Vehicle Controls App 이란 차량 바디, 공조 등의 제어 명령을 수행하는 App 을 의미한다.

  • Semantic Versioning WIKI

    Version with Identifier :

  • Architecting Flexible Control Systems WIKI

    Designing kotlinx serializable hierarchy

  • Namespace WIKI

    Namespace 란 Package/Directory 정도로 생각하면 된다. 특정 공간(space) 내에서 이름(name) 을 식별하기 위한 기술이다.

  • Prometheus Architecture WIKI

    What is Prometheus ?

  • Istio Traffic management WIKI

    Gateway, VirtualService, DestinationRule

  • Service Mesh Architecture WIKI

    여러 Microservice 들이 있을때, 서비스끼리 직접 통신(call by direct) 하는 것이 아니라, Proxy 를 통해서( call by proxy ) 하게 된다. 이때 주로 사용되는 proxy 중 하나는 Envoy Proxy 이다. Envoy Proxy 는 고성능 프록시 사이드카이다.

  • VIN WIKI

    Vehicle Identification Number

  • Forward to EventLoop WIKI

    Direct Memory Access, Java NIO, Streams, Buffers

  • Performance WIKI
  • TEST WIKI
  • CAN WIKI

    Controller Area Network

  • Background, Foreground State in App WIKI

    Apple Push Notification Service(APNs)는 Apple이 iOS, watchOS, tvOS, macOS 등의 운영 체제에서 사용되는 디바이스들에 푸시 알림을 보내는 시스템이다. 이 시스템은 앱 개발자가 자사 애플리케이션을 통해 사용자들에게 중요한 정보나 업데이트를 제공하는 데 사용된다.

  • Envoy Proxy WIKI

    기존의 대표적인 프록시 솔루션으로는 nginx, haproxy, apache 서버등이 있는데, 이러한 프록시들은 보통 TCP/IP 레이어에서 L4 로 작동을 하였다. 그러나 마이크로 서비스에서는 조금더 복잡한 라우팅 요건이 필요한데 예를 들어서 HTTP URL에 따른 라우팅에서 부터, HTTP Header를 이용한 라우팅…

  • Countermeasures For External Interlocking Failures WIKI

    Connection Pool Error :

  • Object Calisthenics WIKI

    객체지향 설계와 구현은 수학 공식을 외워서 문제를 푸는 것과 달리 이론을 안다고 해도 이 이론을 설계와 구현에 녹여내려면 지속적인 수련이 필요한 영역이다. 여기서 수련이라는 의미는 어느 누구나 야구공을 던지는 이론은 다 알고 있지만 이론을 안다고 누구나 다 프로선수 처럼 공을 던질 순 없고 지속적인 훈련(수련)을 통해서만…

  • Unix philosophy WIKI

    Minimalist, Modular software development

  • Elegant Object WIKI

    이 책의 목표는 코드의 유지보수성(maintainability) 을 향상시키는 데 중점을 둔다. 유지보수성은 코드를 이해하는데 걸리는 시간으로 측정할 수 있다. 객체지향에서는 객체의 역할을 이해할 수 있어야 한다. 코드의 품질이 향상된 다는 것은 대부분의 프로젝트에서 비용 절감을 의미한다. 이것이 핵심이다.

  • Meaning of Real Object Oriented WIKI

    진정한 객체지향에서 인스턴스화(instantiation)란 더 작은 객체들을 조합(compose) 해서 더 큰 객체를 만드는 것을 의미한다. 객체들을 조합해야 하는 단 하나의 이유는 새로운 계약을 준수하는 새로운 엔티티(entity)가 필요하기 때문이다.

  • Merge commit with semi-linear history WIKI

    Merge commit with semi-linear history 는 rebase 를 사용하며 merge 커밋을 남기는 전략이다.

  • Spring Cloud OpenFeign WIKI

    Feign is a Declarative REST Client. To use Feign create an interface and annotate it.

  • Experience WIKI
  • Kafka Headers WIKI

    KIP-82 - Add Record Headers

  • Type Assignment for Readability and Safe WIKI

    변수 타입이 명확하지 않은 경우 확실하게 지정해야 한다.

  • Readability WIKI

    Reducing CognitiveLoad

  • Handling Nulls Safely WIKI

    null 은 값이 부족하다(lack of value) 는 것을 나타낸다.

  • Why use mock any ? WIKI

    정확하게 일치하는 값으로 모의 객체를 설정하면 작은 변화에도 테스트가 깨진다.

  • De-Identification WIKI

    “De-identification” is the general term for the process of removing personal information from a record or data set. De-identification protects the privacy of individuals because on…

  • Designing robust APIs with Idempotency WIKI

    Networks are unreliable .

  • Use exceptions to restriction your code WIKI

    require, check, assert

  • Immediate Feedback for Interface Design Decisions WIKI

    TDD doesn’t create Design. You do.

  • The Fundamental Test-Driven Development Cycle WIKI

    MANAGING THE DEVELOPMENT OF LARGE SOFTWARE SYSTEMS - Winston Royce 의 Figure-4 Model 은 일반적인 개발 방식이며 익숙하다.

  • Observability WIKI

    Observability pillars include logs, metrics, and traces. Modern observability also includes metadata, user behavior, topology and network mapping, and code-level details.

  • Mutability Restriction WIKI

    Difficulties in managing states

  • TDD WIKI

    Test Driven Development

  • Business WIKI
  • V2X WIKI

    차량과 차량 사이의 통신은 물론 차량과 사물 간의 통신을 하는 기술을 총칭하여 V2X 라고 한다.

  • Deadcode WIKI

    프로젝트 소스 코드의 일부이지만 어떤 실행에서도 도달할 수 없는 함수를 DeadCode 라고 하며 코드베이스 유지 관리 노력에 지장을 준다.

  • Delta, Snapshot WIKI

    Using JSON Patch in Spring REST APIs

  • Reduce Complexity and Cognitive Load WIKI

    How to keep clean code

  • Domain-Oriented Observability WIKI
  • Payments WIKI
  • Serializability WIKI

    Serializable Transaction

  • Retry Mechanism WIKI
  • Datamart WIKI

    Datamart 란 운영상 생성된 데이터를 변환, 집계하여 분석을 위해 운영 데이터를 가공한 데이터셋 을 의미한다. 조직의 성공을 위해 데이터 기반으로 의사결정을 주도한다는 점을 고려할 때, 운영 데이터보다 더 중요하거나 “중심” 이 되는 정보라고 생각할 수 있다. 데이터 마트는 원시 정보를 특정 비즈니스 부서를 위해 의…

  • Port Forwarding WIKI

    Network address translation

  • Volatile Solves Memory Visibility and Atomic Solves Concurrency WIKI

    Shared Multiprocessor Architecture :

  • Garbage Collector Algorithms WIKI

    Serial, Throughput, CMS, G1GC, ZGC

  • Generation Based Design of Garbage Collection WIKI

    Weak Generational Hypothesis

  • Publish/Subscribe Architecture WIKI

    Message-Oriented Middleware System and Message Broker

  • Polymorphism Functions WIKI

    reader 인터페이스의 계약(interface contract)을 구현한 모든 타입을 다 파라미터로 받을 수 있는 함수를 다형성 함수(polymorphism function) 라고 한다. 이 함수는 구체적 타입에 대해서는 전혀 알지 못한다. 따라서 완전히 디커플링 되어 있으며, 이는 Go에서 할 수 있는 최상위 디커플링…

  • Telnet WIKI

    telnet 은 특정 포트로 연결을 시도하고, 연결이 성공하면 키보드를 통해 텍스트 명령을 보낼 수 있다. 이는 특정 포트의 서비스가 제대로 동작하고 응답하는지를 확인하는 데 사용될 수 있다.

  • System Call WIKI

    CPU 에는 UserMode 와 KernelMode 가 존재한다.

  • Memory Analyzer WIKI

    GC Monitoring, Thread/Heap Dump and Resolution Memory Leak

  • MapReduce WIKI

    맵-리듀스(MapReduce)는 대규모 데이터 처리를 위한 프로그래밍 모델 및 처리 패러다임이다. 이 매커니즘은 많은 문서를 대상으로 읽기 전용(read only) 질의를 수행할 때 사용한다.

  • Tail Latency Amplification WIKI

    Latency Time, Response Time and Service Level Objective(SLO)

  • Event Driven System WIKI

    EDA(Event Driven Architecture) 의 핵심은 당연, Event 이다. Application 에서 발생하는 Event 의 종류를 두 가지로 나눌 수 있다.

  • Universally Unique Identifier WIKI

    A UUID; Universally Unique Identifier , is a 128-bit identifier that is guaranteed to be unique across both time and space. It is often represented as a 36-character hexadecimal st…

  • Vendoring WIKI

    // usage go mod vendor [-e] [-v] [-o] -mod vendor 플래그는 현재 프로젝트의 의존성을 vendor 디렉토리에 있는 패키지들을 사용하여 해결하도록 지시한다. vendor 디렉토리에는 프로젝트의 의존 패키지들의 복사본이 저장된다.

  • Profiling Benchmarks WIKI

    What other profilers can I use to profile Go programs ?

  • Panic WIKI

    Panic means something went unexpectedly wrong. Mostly we use it to fail fast on errors that shouldn’t occur during normal operation, or that we aren’t prepared to handle gracefully…

  • Fuzz WIKI

    Fuzzing is a type of automated testing which continuously manipulates inputs to a program to find bugs.

  • Empty Interface and Generics WIKI

    interface {} 메서드가 zero 인 인터페이스를 Empty Interface 라고 한다. 비어있는 인터페이스는 모든 유형의 값을 보유할 수 있다. (모든 유형은 최소한 0개의 메소드를 구현한다.)

  • Mutex WIKI

    Go’s mottos is “Share memory by communicating, don’t communicate by sharing memory.”

  • Explained Concurrency WIKI

    Do not communicate by sharing memory; instead, share memory by communicating

  • Unix Signal Handling WIKI

    Go 에서 Unix signal 을 처리하기 위해선 os/signal package 를 사용해야 한다.

  • Half Close WIKI

    Close(완전 종료) 란 데이터의 전송 뿐만 아니라 수신하는 것 조차 불가능한 상황 을 의미한다.

  • Dissection Status Management WIKI

    Service Application 을 개발하다보면 상태(status) 관리가 엄청 중요하다. 상태 관리를 잘 하기 위한 몇가지 생각을 적어본다.

  • Protobuffer WIKI

    gRPC 는 HTTP/2 위에서 Protocol Buffers(protobuf) 를 사용해 직렬화된 바이트 스트림으로 통신하므로 JSON 기반의 통신보다 속도가 빠르다. Protocol Buffers are language-neutral, platform-neutral extensible mechanisms for ser…

  • Pointers and Dereferencing WIKI

    Pointers reference a location in memory where a value is stored rather than the value itself. By using a pointer (*int), the zero function is able to modify the original vari‐ able…

  • Architecture Decision Records WIKI

    Architecture Decision Records 에는 상태, 컨텍스트, 결정사항, 결론 이라는 4가지 핵심 섹션이 존재한다.

  • Docker Log Rotation WIKI

    Logging Driver Mechanism

  • Defensive Copy WIKI

    Legacy Code 나 신뢰할 수 없는 코드로부터 불변성을 유지시키기 위해서는 Copy on Wirte 만으로 해결할 수 없다. 이때 사용되는 기술이 방어적 복사(defensive copy) 이다. 방어적 복사는 데이터를 변경할 수도 있는 코드와 불변성 코드 사이에 데이터를 주고 받기 위한 원칙이다.

  • Principle Of Immutability is Copy on Write WIKI

    Immutable Data Structure, It's Fast Enough

  • Difference Between Method And Function WIKI

    What's the difference between a method and a function? 에 따르면 A function is a piece of code that is called by name. A method is a piece of code that is called by a name that is asso…

  • Hard to untangle the tangled thread WIKI

    함수형 프로그래밍에서 계산(calculate) 을 작게 분리하는 것은 좋다.

  • Timeline Cutting WIKI

    Timeline Diagram 은 시간에 따라 어떤 Action 들이 일어나는지를 Diagram 으로 표현한 것이다. 분산 시스템을 이해하는데 도움이 되는 기술이다.

  • Stratified Design WIKI

    계층형 설계(stratified design) 의 핵심은 변경 가능성에 따라 코드를 나누는 것 이다.

  • Side Effect WIKI

    부수 효과(side effect)란 함수에서 결괏값을 주는 것 외에 하는 모든 행동을 의미한다. 부수 효과는 일반적으로 해당 메서드 밖에 있는 상태를 변경하거나, I/O 를 수행하는 것으로 정의된다. 부수 효과만을 위해 실행되는 메서드를 프로시저(procedure) 라고 부른다.

  • Deferred Execution WIKI

    Lambdas, Reactive, Coroutines and Functional Interfaces

  • Testing in a Reactive World WIKI

    Reactor Core Test Examples 와 reactor-test/test 를 통해서 다양한 테스트 방법을 확인할 수 있다.

  • Debugging in a Reactive World WIKI

    fun main () { val seconds = LocalTime . now (). second val source : Mono < Int > source = if ( seconds % 2 == 0 ) { Flux . range ( 1 , 10 ) . elementAt ( 5 ) } else if ( seconds %…

  • Sometimes communication is more important than development WIKI

    사내 dogfooding 을 진행하면서 다시금 커뮤니케이션(communication) 의 중요성에 대해서 깨달았다.

  • Google Firebase Network Latency Increased Error WIKI

    2023-09-21 Google Firebase 에 큰 장애가 발생했다. FE(Google FrontEnd) 와 Firestore API 간의 통신에 문제가 있어서 클라이언트 요청 전달 과정에서 트래픽이 원활하지 못해 지연이 발생한 이슈이다.

  • Context WIKI

    Reactor 의 Context 는 스레드에 매핑되는 것이 아니라 Subscriber 에 매핑 된다. 즉, 구독이 발생할 때마다 해당 구독과 연결된 하나의 Context 가 생긴다.

  • Scheduler WIKI

    Reactor 에서 Scheduler 는 스레드를 관리해주는 역할을 담당한다.

  • Preventing log loss with non-blocking mode WIKI

    Blocking mode 의 문제점은 stdout, stderr 쓰기가 호출되면 애플리케이션 코드가 차단(blocking) 되어 애플리케이션이 작동하지 않고 상태 검사 실패 및 작업 종료로 이어질 수 있다는 것이다.

  • Sinks WIKI

    Sinks are constructs through which Reactive Streams signals can be programmatically pushed, with Flux or Mono semantics.

  • Netty ByteBuf WIKI

    Java NIO provides ByteBuffer as its byte container. Netty’s alternative to ByteBuffer is ByteBuf . ByteBuf is Netty’s data container.

  • Meaningful Code Comments WIKI

    많은 사람들은 코드 주석이 해롭다고 말한다. 코드 주석 없이도 코드가 설명되게끔 짜야한다는 것이다.

  • CoroutineDispatcher WIKI

    CoroutineDispatcher 는 코루틴이 실행되는 스레드를 결정한다.

  • Exception Handling in Kotlin Coroutine WIKI

    별도의 Root CoroutineScope 를 가지는 Coroutine 에서 예외를 throw 하는 경우 :

  • Meaning of Data Oriented WIKI

    데이터 지향(data oriented)의 중요한 원칙은, 데이터를 데이터 그대로 사용하는 것이다. 데이터를 그대로 사용했을때의 장점은 데이터를 여러가지로 해석할 수 있다는 것 이다.

  • Coroutine Cancel WIKI

    코루틴을 취소시키기 위해서는 delay, yield 와 같은 suspend 함수를 활용해야 한다.

  • Aggregate Massive Data With Bloom Filters WIKI

    Bloom filters used in variety cases. AdPlacement, Fraud Detection in Finance

  • RELIABILITY WIKI

    신뢰성(reliability) 은 의도한 기능을 올바르고 일관되게 수행하는 능력 이다. Reliability depends on multiple factors, of which resiliency is one of the most impactful. 탄력성(resiliency) 은 인프라 또는 서비스 중단을 복구, 수요를…

  • AWS Well-Architected Framework WIKI

    The AWS Well-Architected Framework is based on six pillars:

  • Job, Async, Deferred WIKI

    Job 은 Coroutine 을 제어하는 역할을 담당한다.

  • Process, Thread, Coroutine WIKI

    Process 는 Heap, Stack 등 프로세스가 관리하는 메모리 영역을 PCB 에 이전 정보를 저장해 두고, 새로운 프로세스의 메모리 영역을 사용한다. 이렇게 프로세스 끼리 메모리 영역을 교체하는 것을 Context Switching 이라고 한다.

  • Don't Overspecialize Be Flexible WIKI

    Advice From The Creator of C++ :

  • How to disable Spring Security Auto Configuration in Spring Webflux WIKI

    Spring Security Dependency 가 있는 경우 테스트를 수행하게 되면 인증된 사용자 Mocking Data 를 담아서 보내야 한다. 그렇지 않으면 401 UnAuthorized Error 가 발생한다. Spring Security Dependency 를 제거하거나 ReactiveSecurityAutoCon…

  • API WIKI
  • Debugging to analyze suspend mechanisms WIKI

    Coroutine 은 suspension point(중단 지점) 에서 중단(suspend) 될 수 있고, 다시 해당 suspend point 에서 재개(resume) 할 수 있다.

  • Mobile WIKI
  • Netty Memory Leak WIKI

    WebClient 의 exchange 메서드는 Memory Leak 가능성 때문에 deprecated 되었다.

  • Prevent Duplicate Storing in Redis WIKI

    Enum 을 사용하여 Redis Key 를 사용하는 경우 :

  • MetadataLock WIKI

    Metadata is “the data about the data.” Anything that describes the database is metadata. Thus column names, database names, user names, version names, and most of the string result…

  • RealWorld WIKI
  • DDD WIKI

    DDD is about discussion , listening, understanding, discovery and business value, all in an effort to centralize knowledge.

  • Effective Final with Lambda Capturing WIKI

    Lambda Capturing 은 람다 바디 외부에 선언된 변수를 람다 바디 내부에서 사용하는 것을 의미한다. 이때 제약조건이 있는데 변수가 final 이거나 Effective Final (사실상 final 로 간주되는 변수) 이어야 한다. 그렇지 않을 경우 concurrency 문제가 생길 수 있어서 컴파일러가 알려준다…

  • Caching WIKI
  • Autonomous Driving Level WIKI

    Figure Source - Hyundai Transys

  • Go WIKI
  • Demand, Source WIKI

    Demand 는 '수요, 요구' 등의 의미를 갖고 있다. Reactive Streams 에서도 동일하다.

  • Anonymous Class with Super Token Types WIKI

    Deserialize Generic 에서 Super Type Tokens 라는 개념을 잠깐 살펴봤는데, 이 개념의 핵심은 anonymous inner classes 를 활용하여 컴파일 시간동안 타입 정보를 보존 하는 것이다.

  • Deserialize Generic WIKI

    com.fasterxml.jackson 을 사용하여 serialize/deserialize 를 수행한다. Generic Type 의 경우 어떻게 deserialize 할 수 있는지 알아보자.

  • Server-Side Request Forgery WIKI

    서버 측 요청 위조(Server-Side Request Forgery, SSRF) 공격은 공격자가 서버를 속여 무단 요청을 보내도록 유도하는 수법이다.

  • Over The Air WIKI

    OTA(Over The Air)는 무선 통신을 통해 소프트웨어, 펌웨어, 설정 등을 무선으로 업데이트하거나 배포하는 기술 및 프로세스를 나타내는 용어이다. 주로 이용되는 분야는 모바일 기기, 자동차, 스마트 홈 기기, 산업용 장비 등 다양한 분야에 걸쳐서 사용된다.

  • Mobility Language Dictionary WIKI

    PBV(Purpose Build Vehicle) 목적 기반 모빌리티라고 부른다. 단순한 이동 수단을 넘어 목적지로 이동하는 동안 탑승객에게 필요한 맞춤 서비스를 제공한다. 대표적인 예로 로보택시 나, 로보마트가 있다.

  • Write Ahead Logging WIKI

    미리 쓰기 로그는 크래시 및 트랜잭션 복구에 사용되는 추가 전용 보조 디스크 상주 구조이다. 변경 사항은 데이터베이스에 기록되기 전에 안정적인 저장소에 기록되어야 하는 로그에 먼저 기록된다.

  • Devops WIKI
  • Reactive Streams Pub/Sub Model WIKI

    Publisher 는 발행자인데 subscribe 메서드가 있는것이 의아할 수 있다. Kafka 의 Pub/Sub Model 과 비교해보자.

  • Lazy Write WIKI

    JPA 에서 쓰기 지연 저장소의 개념은 주로 트랜잭션 관리와 관련이 있다. JPA 는 영속성 컨텍스트라는 개념을 통해 엔티티(Entity)를 관리한다. 이 영속성 컨텍스트는 변경된 엔티티를 데이터베이스에 반영할 때 쓰기 지연 저장소를 사용하여 효율적으로 처리한다.

  • Security Properties Of Hash Functions WIKI

    역상 저항성(pre-image resistance)은 주어진 출력을 입력으로 바꾸는 역함수를 누구도 만들 수 없다는 성질이다.

  • Deterministic WIKI

    결정론적(deterministic)이란 동일한 입력이 주어지면 항상 동일한 결과를 생성한다는 뜻이다.

  • DogFooding WIKI

    "Dogfooding"은 소프트웨어 개발 및 제품 관련 용어로, 회사 내부에서 개발한 제품을 직접 사용하는 것을 의미한다. 다시 말해, 회사의 직원들이 개발한 소프트웨어나 제품을 자신들이 실제로 사용하는 것을 의미한다.

  • Authorization Code Flow with Proof Key for Code Exchange WIKI

    OpenIdConnect, Authorization Code Grant with PKCE

  • Signal WIKI

    Reactive Streams 에서 Signal 은 Publisher 와 Subscriber 간에 주고받는 상호작용을 의미한다.

  • Asymmetric Cryptography WIKI

    비대칭 암호학(asymmetric cryptography)은 공개키와 비밀키를 사용하는 방식이다.

  • Kerckhoffs Principle WIKI

    암호체계의 안전성은 키의 비밀성에만 의존해야 한다

  • Internationalization with Language Translation Tables WIKI

    Stackoverflow MySQL Language translation query

  • If you know this, you can solve concurrency WIKI

    따라서, 공유 자원(shared resources) 이 어떤 것인지를 파악하는 것이 가장 중요하다.

  • FFSC WIKI

    FFSC Architectures :

  • Reactive Relational Database Connectivity WIKI

    Picking a database driver and create a R2dbcEntityTemplate instance :

  • Functor and Monad in Functional Programming WIKI

    RxJava was designed and built on top of very fundamental concepts like functors , monoids and monads. RxJava, working on top of similarly imperative language, the library has its r…

  • Idempotency with Redis WIKI

    Idempotency Key that resolve consistency issues with retries 에 멱등성이 무엇인지, Stripe 와 Toss 는 어떻게 사용하고 있는지 정리하였다.

  • How Discord Stores Trillions of Messages WIKI

    Discord 팀이 조 단위 메세지를 DB에 저장하는 방법

  • Distributed Key-Value Store in Cassandra WIKI

    Cassandra Data Partitions :

  • Cache Consistency WIKI

    The purpose of a lock is :

  • Unit of Measures WIKI

    GB, GiB - The binary method

  • Multithreading WIKI

    A thread is a sequence of control within a process. A single-threaded process follows a single sequence of control while executing. An MT process has several sequences of control,…

  • Traffic Shadowing WIKI

    Traffic Shadowing 은 Production 환경에서 원본 트래픽을 복제하여 아직 공개 되지 않은 테스트 서버에 미러링을 수행하는 것이다. 이렇게 하면 테스트 서버에서 내가 만든 API 들이 실제 트래픽과 동일한 요청을 받기 때문에 Production 에 배포했을 때 어떤 문제가 생길지 미리 알 수 있다.

  • Cherrypick WIKI

    git Cherrypick 을 사용하면 다른 branch 의 커밋 내용을 내가 작업하고자 하는 브랜치로 가져와서 작업할 수 있다.

  • Netty PrematureCloseException WIKI

    Calling REST Services(server to server 통신) 에서 Reactor Netty 의 WebClient 를 사용 중이었고, Bean 으로 등록해서 사용 중이었다.

  • Reason of kernel memory increasing WIKI

    Docker, Kubernetes with Linux Kernel OOM Killer 글의 Debugging 파트에서, 수정된 소스로 배포 후 Datadog Monitoring 을 통해 container.memory.kernel 값이 급격하게 증가하지 않게 된 것을 확인하였다. 즉, Pod Restart/Killed 가…

  • Docker, Kubernetes with Linux Kernel OOM Killer WIKI

    사내에서 Kubernetes 환경에서 OOM Error 를 마주하였다. ArgoCD 를 통해 Admin 서버가 몇번씩 주기적으로 재시작되고 있음을 확인했고, Datadog Metrics 를 통해서 메모리 사용량을 체크하였다.

  • Linux Memory Allocation and Overcommit Concepts WIKI

    Original. How to Check Memory Usage Per Process on Linux

  • VEHICLE SIGNAL SPECIFICATION WIKI

    The Connected Vehicle Systems Alliance (COVESA) 에서 Vehicle Signal Specification (VSS) 를 제공하고 있는데, Automotive Data 에 대한 Standardized Spec 을 정의할 수 있다.

  • cgroup WIKI

    cgroup 은 리눅스 운영체제에서 프로세스 그룹에 대한 리소스 제한, 우선 순위 지정, 계측 등을 관리하기 위한 기능입니다.

  • Dockerizing a whole physical Linux server WIKI

    Original. Dockerizing a whole physical Linux server

  • Coroutines with WebFlux WIKI

    Spring Coroutines Docs - Kotlin Coroutines are Kotlin lightweight threads allowing to write non-blocking code in an imperative way. On language side, suspending functions provides…

  • Mockk, SpringMockk, Mokito-Kotlin WIKI

    Mockk is mocking library for Kotlin.

  • KEDA WIKI

    Kubernetes Event-driven Autoscaling

  • Reactor Timeout Fallback WIKI

    Reactor code with timeout and fallback :

  • JVM Optimization with warm up WIKI

    A JIT compiler compiles bytecode to native code for frequently executed sections. This is in contrast to ahead-of-time (AOT) compilation, where the source code is compiled into mac…

  • Event and Separation of De-concerns WIKI

    Internal Event vs External Event:

  • Service Connectivity WIKI

    연결성을 만드는 방법 (클라우드 네이티브 애플리케이션 들을 연결):

  • Language WIKI
  • Structured Concurrency WIKI

    Structured Concurrency The core concept is the encapsulation of concurrent threads of execution by way of control flow constructs that have clear entry and exit points and that ens…

  • Event-driven Architecture, State machines WIKI

    The code of nanomsg to use state machines internally, passing asynchronous events around instead of using random callbacks between the components. To solve The Callback Hell Proble…

  • Mechanism of Context, Distributed Tracing with MDC WIKI

    Mechanism that transport contextual metadata in Project Reactor

  • Improve statement caching efficiency WIKI

    Relational database provides an Execution Plan cache:

  • CRDTs WIKI

    Conflict-Free Replicated Data Types

  • NATS WIKI

    NATS is message oriented middleware .

  • Advanced Message Queuing Protocol WIKI

    AMPQ(Advanced Message Queuing Protocol)는 단일 수신자 메시징 패턴 구현에 자주 사용된다. 메시지가 제대로 전송되었는지 확인(acknowledge)도 가능하다.

  • Logging in WebFlux with Kotlin WIKI

    Guide - Log Request/Response Body in Spring WebFlux with Kotlin

  • ForkJoinFramework WIKI

    ForkJoin framework, problems or tasks are recursively broken down into sub-tasks . Tasks are solved with the help of worker threads provided by a thread pool. Each worker thread wi…

  • Datadog Log Collection with Kubernetes WIKI

    Preprocessing of JSON logs occurs before logs enter pipeline processing. Preprocessing runs a series of operations based on reserved attributes, such as timestamp, status, host, se…

  • Schema Registry WIKI

    Asynchronous Messaging Pattern 을 사용하는 경우 메시지나, 데이터 타입의 신뢰성과 안전한 비동기 메시징을 구현하기 위해서 Schema Based Serialize & Deserialize 를 도입하는게 좋다. 여기서 말하는 Schema 란 통신에 참여하는 주체들이 주고받는 데이터를 정의하고 검증할…

  • Synchronous Messaging Pattern WIKI

    동기 메시징 패턴(Synchronous Messaging Pattern)은 마이크로 서비스간 묵시적인 의존성(dependency) 이 생긴다.

  • Networking Infrastructure Abstraction with Overlay Network WIKI

    오버레이 네트워크(overlay network)는 물리 네트워크 위에서 가상 네트워크를 구축하는 기법을 의미한다. 오버레이 네트워크를 사용하면 컨테이너간 통신이 가능하게 된다.

  • Cloud Native WIKI

    Cloud Native 란 Microservices 를 느슨하게 결합하여, 크기 조절이 가능하고 탄력적이며 관리, 관찰이 용이한 소프트웨어 애플리케이션을 만드는 것을 의미한다.

  • Null Safety with JSR-305 WIKI

    Null Safety - Spring Docs :

  • Entity Logging WIKI

    import javax.persistence.Entity ; import javax.persistence.GeneratedValue ; import javax.persistence.GenerationType ; import javax.persistence.Id ; @Entity public class Entity { @I…

  • Improve Gradle Build Performance WIKI

    Improve the Performance of Gradle Builds

  • Dependency for Reactive, Kotlin, WebFlux 3.x with LINE WIKI

    Hibernate Reactive, Vert.x and Kotlin JDSL

  • ExecutorService WIKI

    public interface Executor { /** * Executes the given command at some time in the future. The command * may execute in a new thread, in a pooled thread, or in the calling * thread,…

  • Hot Diggety Dog! WIKI

    Taking the form of an unorganized article.

  • Crypto WIKI
  • Exception Hierarchy WIKI

    Exception Format is very important in Application Architecture.

  • Bulkhead WIKI

    How LINE OpenChatServer handles extreme traffic spikes

  • Masking WIKI

    <configuration> <appender name= "jsonConsoleAppender" class= "ch.qos.logback.core.ConsoleAppender" > <encoder class= "net.logstash.logback.encoder.LogstashEncoder" > <jsonGenerator…

  • Logging WIKI
  • Towards a Higher than the Developer WIKI

    개발자는 설계를 한다. Such as Class Design, User Interfaces and Source codes. 따라서, 내가 알고 있는 것(= 계속 유지해야 할 부분) 에 대한 전문성을 유지 해야 한다.

  • DEFLATE WIKI

    Deflate is Industrial Standards in Compression Algorithms.

  • Huffman Coding Algorithms WIKI

    Huffman Coding is lossless data compression algorithm . It is an algorithm that gives short binary codes to characters with high frequency of appearance of characters.

  • Run-Length Encoding WIKI

    Run-Length Encoding (RLE) is a way to compress data without losing any information (lossless compression). It replaces consecutive repeating characters with a single character and…

  • Jakarta and RFC7807 with Spring Boot 3.0+ WIKI

    The Eclipse Foundation is set to become the new steward of enterprise Java, taking over from Oracle, which no longer wants to manage Java EE. - Oracle Chooses Eclipse Foundation as…

  • Projection for Avoid LazyInitializationException WIKI

    To avoid the LazyInitializationException, you can either make sure to access the lazily loaded property or collection while still within the Hibernate session or transaction, or yo…

  • Open Session In View Pattern WIKI

    OSIV stands for Open Session In View, and it is a design pattern used in Hibernate to manage database transactions and sessions.

  • Decision Algorithm and Parametric Search WIKI

    파라메트릭 서치(Parametric Search)는 Parametric 이라는 단어를 보면 알 수 있듯이 매개 변수를 이용한 탐색 기법이라는 것을 알 수 있다. 파라메트릭 서치(Parametric Search) 는 최적화 문제 를 결정 문제 로 바꾸어 해결하는 기법이다. 즉, 결정 알고리즘(Decision Algorith…

  • Binary Search WIKI

    이진 탐색(binary search)은 반으로 쪼개서 찾고자 하는 값이 해당되지 않는 범위는 날리고, 다시 쪼개진 반에서 이분 검색을 실시한다. 이분 검색을 실시하기전에 오름차순 정렬이 되어있어야 한다.

  • The Future of Developers WIKI

    With AI such as chatGPT becoming an issue, the time has come for developers to prepare for a second job change.

  • Time Complexity WIKI

    Time Complexity is represented Big-O.

  • Kata WIKI

    Kata, a Japanese word, meaning literally: "form" (型 or 形), is a detailed choreographed pattern of movements made to be practiced alone, but are also practiced within groups and in…

  • CAP Theory of Design Principles for Distributed Systems WIKI

    분산 시스템의 설계 원칙을 설명하는 이론

  • N+1 Query Problem with JPA WIKI

    N+1 이란 하위 엔티티들을 조회하기 위해서 상위 엔티티의 Row 개수 만큼의 추가 쿼리가 발생하는 것을 의미한다.

  • Blocking NonBlocking Synchronous Asynchronous WIKI

    관심사가 무엇인지를 중심으로 보는것이 이해하는데 도움이 된다.

  • Distributed Lock WIKI

    Distributed Lock with Redis

  • Aspect Oriented Programming WIKI

    Cross-cutting concerns are aspects of a software system that affect multiple components or layers but do not necessarily fit into the primary functional decomposition of an applica…

  • Code Generator Library, CGLIB WIKI

    kotlin 의 경우에 모든 클래스들이 default 로 final 이기 때문에 AOP 이슈가 생길 수도 있다. 항상 그럼 상속 가능하게 open 을 붙여주는 것도 엄청 귀찮을 것이다.

  • DynamicProxy WIKI

    Java 에서 Proxy 인스턴스를 런타임에 만들 수 있는 방법을 제공하는데 이를 DynamicProxy 라 한다. 즉, 애플리케이션 실행 중(runtime)에 인스턴스를 동적으로 만든다는 것이다.

  • Thoughts of Objects to Reduce Dependencies Between Packages WIKI

    패키지간 의존성을 줄이기 위한 객체에 대한 고찰 및 생산성과 안정성에 대한 트레이드오프

  • Hash WIKI

    해시(hash) 란 다양한 길이를 가진 데이터를 고정된 길이를 가진 데이터로 매핑(mapping)한 값이다.

  • Partitioning WIKI

    Vertical Partitioning and Sharding

  • Distributed UniquenessKey WIKI

    분산환경에서 UniqueID 를 어떻게 생성할까? ID Generator 는 필수 불가결(mission-critical) 컴포넌트 이므로 아주 높은 가용성을 제공해야 한다.

  • Replication WIKI

    Replication 이란 마스터(master)와 슬레이브(slave)를 정해두면 마스터에 쓴 내용을 슬레이브가 폴링(polling) 해서 동일한 내용으로 자신을 갱신하는 기능이다. 슬레이브는 마스터의 레플리카(replica, 카피)가 되는 것이다. 이렇게 해서 동일한 내용의 서버를 여러 대 마련할 수 가 있다.

  • Idempotency Key that resolve consistency issues with retries WIKI

    재시도에 따른 정합성 문제를 멱등키로 해결하기

  • Avoid blocking all threads in a network latency WIKI

    네트워크 지연 환경에서 모든 스레드 블락킹 피하기

  • Branch By Abstraction WIKI

    "Branch by Abstraction" is a technique for making a large-scale change to a software system in gradual way that allows you to release the system regularly while the change is still…

  • Demilitarized Zone WIKI

    DMZs function as a buffer zone between the public internet and the private network. The DMZ subnet is deployed between two firewalls. All inbound network packets are then screened…

  • Lambda Architecture to handle massive quantities WIKI

    Batch RealTime Architecture

  • Components of Software Architectures WIKI

    Expectations for Architects

  • Layered Architecture with Sinkhole WIKI

    Layered Architecture 를 사용해본 사람은 알겠지만 특별한 비지니스로직이 많이 없는 CRUD 의 경우에는 각 Layer 에서 별도의 로직 처리 없이 Object Converting 만 하여 요청을 처리하고 응답을 내주곤 한다.

  • Normalization WIKI

    Database normalization is a process of organizing data in a database in a way that reduces redundancy and dependency between data.

  • Caching Strategy and Eviction Policies WIKI

    대용량 아키텍처에서 성능(처리량)을 높이기 위해 적절한 Cache Strategy 와 함께 Cache Layer 를 도입하는 것은 효과가 좋다.

  • Circuit Breaker with Fallback Improving Resiliency WIKI

    Circuit Breaker 패턴은 호출 당하는 서비스에서 응답이 늦거나 (미흡한 예외 처리로 인한) 예외가 발생하여 생기는 문제를 다른 마이크로서비스에게 전파되지 않도록 하기 위함이다. 즉, MSA 에서 시스템의 안정성과 복원력을 향상시키기 위한 패턴이다. 서비스 응답이 늦는 경우(Timeout), 지속적인 호출이 쌓이…

  • Query Offloading WIKI

    Software 에서 Offload Processing 이란 기본적으로 시간이 오래걸리는 작업을 다른 방식으로 처리하는 것을 의미하는 것 같다.

  • Storage Estimation with Quantitative Analysis WIKI

    음식 주문앱, 택시 호출 서비스 등과 같은 곳에서 실시간 위치 검색 서비스를 사용 중이다. 이러한 서비스를 구현하기 위해 지리 공간 인덱스(Geo-spatial Index)에 대한 백엔드 인프라 설계가 필요하다.

  • Clean Architecture WIKI

    Entities 는 기업의 업무규칙(고수준 정책) 들을 정의하는 Layer 이며, Use Cases 는 애플리케이션 기능(사용 사례) 을 정의하는 Layer 이다.

  • Ahead of Time Engine Optimizations WIKI

    Spring Native with GraalVM

  • Distributed Caching in Microservices WIKI

    Cache locality refers to the principle that computer programs should try to maximize the use of data already present in the cache, rather than frequently accessing data from main m…

  • Hexagonal Architecture WIKI

    Ports and Adapter Architecture

  • Difference Stack and Heap WIKI

    In computer science, the terms "stack" and "heap" refer to two different types of memory allocation methods used by programs.

  • ParameterizedTypeReference WIKI

    The purpose of this class is to enable capturing and passing a generic Type. In order to capture the generic type and retain it at runtime, you need to create a subclass (ideally a…

  • Token Bucket to Control Communication Volume WIKI

    토큰 버킷 알고리즘은 분산 시스템에서 속도 제한에 일반적으로 사용되는 방법이다. 특정 기간 내에 처리할 수 있는 요청 수를 제한(rate limit)하여 요청 처리 속도를 제어할 수 있는 간단한 알고리즘이다.

  • Offload Processing WIKI

    Offloading processing is the practice of delegating certain tasks or operations to a separate thread pool or executor service in order to free up the main event loop and maintain g…

  • Replenishing Optimization WIKI

    You might also have noticed that some operators have variants that take an int input parameter called prefetch. This is another category of operators that modify the downstream req…

  • Deepdive in ProjectReactor WIKI

    Docs 와 같이 보면 좋을 내용들을 정리

  • Hot, Cold Sequence WIKI

    Flux < String > coldPublisher = Flux . fromIterable ( Arrays . asList ( "blue" , "green" , "orange" , "purple" )) . map ( String: : toUpperCase ); // This will only emit data when…

  • Reactive Streams Specification WIKI

    Reactive Streams 란 비동기 스트림 처리(asynchronous stream processing) 과 논-블러킹(non-blocking) 과 배압(backpressure) 처리를 위한 JVM, Javascript 환경에서의 표준이다.

  • Marble Diagram WIKI

    아래로 내려오는 점선 화살표는 입력, 출력을 의미한다. 아이템들이 Observable 에 의해 방출될 때 onNext() 가 호출되며, 파이프( | )에서는 onComplete() 가 호출된다. X 에서는 onError() 가 호출된다.

  • GC WIKI

    Automatic garbage collection is the process of looking at heap memory, identifying which objects are in use and which are not, and deleting the unused objects . The main purpose of…

  • Algorithm WIKI
  • MySQL RDS vs MySQL Aurora WIKI

    Amazon Web Services (AWS) provides two managed relational database services: Amazon RDS for MySQL and Amazon Aurora MySQL. Both provide managed relational databases based on the My…

  • Debounce; Throttle WIKI

    Debouncing 은 여러 요청을 하나의 그룹(grouping)으로 묶어서 처리 하는 것을 의미한다. 보통 연이어 요청이 오는 경우 마지막 요청(또는 제일 처음)만 허용한다.

  • Message Delivery in Event Driven Architecture WIKI

    Transactional Outbox, Polling Publisher, Message Broker

  • Service Discovery WIKI

    Service discovery is a technique for identifying and locating services in a distributed system environment. It enables services to be automatically located, registered and connecte…

  • Reduce Dependency WIKI

    There are several techniques that can be used to reduce dependencies and enforce a clear separation of responsibilities:

  • Character of Architectures WIKI

    Clean Architecture and Hexagonal Architecture are both architectural patterns that aim to separate the concerns of software systems into isolated, independent, and interchangeable…

  • Antifragile WIKI

    In the context of Microservices Architecture (MSA), "antifragile" refers to a system's ability to withstand and even benefit from change, uncertainty, and stress. An antifragile MS…

  • Observable WIKI

    Reactive Extensions(Rx) 는 Observer 패턴, Iterator 패턴, 함수형 프로그래밍의 조합이다.

  • Gateway in Microservices WIKI

    In Microservice Architecture (MSA), a gateway is a single entry point for all incoming requests to the microservices. It acts as a reverse proxy, routing requests from clients to t…

  • Saga WIKI

    Saga pattern in microservices architecture (MSA) is a way to handle transactions and ensure data consistency across multiple services. It involves breaking down a large transaction…

  • Filter WIKI

    서블릿 필터는 웹 응용 프로그램의 요청과 응답을 가로채어 전처리, 후처리를 위해 사용되는 자바 클래스이다.

  • Distributed Tracing WIKI

    분산 추적(distributed tracing)은 MSA 환경에서 수 많은 마이크로서비스들 간의 트랜잭션 로그를 추적, 모니터링 하는 것을 의미한다.

  • Actions to Calculations WIKI

    계산을 선호하는 이유는 계산이 훨씬 더 다루기 쉽고 값을 믿고 쓸 수 있다. 즉, 부수 효과를 걱정하지 않고 사용할 수 있다.

  • Essence of Domain Driven Design WIKI

    Domain Driven Design is Philosophy, Approach and Art

  • Widget WIKI

    Flutter 의 핵심 개념은 모든 것이 위젯(widget) 이라는 점이다. 다른 객체가 없다는 것은 아니다. 앱 개발자 입장에서 위젯 외의 객체는 크게 신경 쓸 필요가 없다.

  • Claim Domain WIKI

    E-commerce 에서 클레임(Claim)이란 주문에 대한 변경 을 의미한다.

  • Defensive/Offensive Programming WIKI

    모든 가능성을 올바른 방식으로 처리하는 것을 Defensive Programming 이라고 한다. 하지만 모든 상황을 안전하게 처리하기 힘들 수도 있다. 이때 Offensive Programming 방법을 사용한다. Kotlin 의 require, check 등을 활용하여 문제가 발생했을때 개발자에게 알려주는 방식이다.

  • Generative Pre-trained Transformer WIKI

    ChatGPT 는 OpenAI 가 개발한 프로토타입 대화형 인공지능 챗봇이다.

  • Cloud DesignPatterns WIKI
  • Flutter WIKI
  • Intention Revealing Interface WIKI

    클라이언트 개발자가 객체를 효과적으로 사용하는 데 알아야 할 정보를 인터페이스로부터 얻지 못한다면 세부적인 측면을 이해하고자 객체 내부를 깊이 파고들 수 밖에 없다. 이 경우에는 캡슐화를 통해 얻을 수 있는 대부분의 가치를 잃어버리고 만다.

  • Aliasing Bug by Reference Of Collections And Objects WIKI

    Aliasing occurs when the same memory location is accessed through more than one reference.

  • Inlining Local Variable WIKI

    지역 변수를 함수 파라미터 안으로 인라이닝 하는 기준은 지역 변수가 갖고 있는 정보가 충분한지 이다.

  • Acknowledgement WIKI

    The most important part of Messaging is messages themselves and their reliable delivery and processing . Acknowledgement 는 메시지의 안정적인 처리를 위해 고안된 매커니즘이다.

  • Salted Challenge Response Authentication Mechanism WIKI

    Credentials Authentication Mechanism

  • rebase WIKI

    base 는 각 저장소(원격 저장소, fork 한 내 저장소, clone 한 내 Local Repository)에 있는 커밋 해시값들의 묶음 이라고 생각하면 된다. rebase 는 base 를 갱신(최신으로 유지) 하는 작업을 의미한다. push 는 base 가 같아야만 할 수있다.

  • Module WIKI

    모든 사람들이 MODULE 을 사용하지만 그 중에서 MODULE 을 하나의 완전한 자격을 갖춘 모델 요소로 여기는 사람은 거의 없다. MODULE 간에는 결합도가 낮아야 하고 내부 응집도는 높아야 한다. MODULE 로 쪼개지는 것은 코드가 아닌 바로 개념이다. 어떤 사람이 한 번에 생각해낼 수 있는 양에는 한계가 있으며…

  • Parallel Change WIKI

    인터페이스를 변경해야 하는 경우 병렬 변경(Parallel Change) 기법을 사용한다. 확장과 축소 리팩터링 이라고도 한다. 확장과 축소 리팩터링은 새 인터페이스를 추가하고, 예전 인터페이스를 사용하는 부분을 새 인터페이스를 사용하게 변경한 후, 아무도 예전 인터페이스를 사용하지 않을 때 예전 인터페이스를 제거하는 단…

  • Value semantics WIKI

    In computer science, having value semantics (also value-type semantics or copy-by-value semantics) means for an object that only its value counts, not its identity. Immutable objec…

  • Prerequisites for Refactoring WIKI

    MartinFowler - 리팩터링을 하고 싶다면, 필수 전제조건은 탄탄한 테스트가 있어야 한다. 좋은 테스트 커버리지는 우리가 설계 개선을 위해 수행하는 리팩터링이 시스템의 동작을 우연히 변경하는 일이 없음을 보장해 준다.

  • Stream Processing WIKI

    Message Broker and Event Sourcing

  • TroubleShooting WIKI
  • Architecture WIKI
  • eXtended Architecture WIKI

    Distributed Transaction and Consensus Algorithm

  • Generics WIKI

    제네릭의 탄생 배경은 특정 타입만 다루는 클래스, 함수를 만들기 위함 이다. Generic 이 없던 시절에는 List 에 여러 타입의 값들이 담겼을 것이다. 이 값들을 꺼내서 사용하려면 type casting 을 거쳐야 한다. 즉, 내가 사용하고자 하는 타입으로 변환을 해줘야 한다.

  • Continuation Passing Style WIKI

    Debugging to analyze suspend mechanisms 에서 코루틴들이 중단-재개 되면서 함수 내에 사용되는 지역변수 정보들을 컨티뉴에이션에 저장하고 가져다 사용하는 것을 확인했다. Continuation 의 경우 실제 Function 에서 Thread Stack 영역에 물고 있어야 하는 정보를 저장하는…

  • Callback and Reactive Streams WIKI

    Client side 에서는 View 를 Rendering 하는 과정에서 Main Thread 가 Block 되지 않아야 한다.

  • OpenAPI Specification implementation by Swagger and RestDocs WIKI

    The OpenAPI Specification (OAS) defines a standard, language-agnostic interface to RESTful APIs which allows both humans and computers to discover and understand the capabilities o…

  • Guava Preconditions WIKI

    Domain Logic 에 대한 사전 조건(precondition)을 검사하는 책임을 가진 객체를 만들 수 있다.

  • Response and Exception Handling WIKI

    ControllerAdvice, ExceptionHandler and ResponseBodyAdvice

  • Remove high coupling between Contexts through Event WIKI

    public class Order { public void cancel ( RefundService refundService ) { // 주문 로직 verifyNotYetShipped (); this . state = OrderState . CANCELED ; // 결제 로직 this . refundStatus = Sta…

  • Anticorruption Layer WIKI

    위 그림에서 PaymentAdapter 처럼 외부 시스템의 모델이 도메인 모델을 침범하지 않도록 만들어주는 계층을 Anticorruption Layer 라고 부른다.

  • BoundedContext WIKI

    처음에 도메인 모델을 만들 때 단일 도메인을 만들어 도메인 모델을 완벽하게 표현하려는 시도는 올바르지 않다. 한 도메인은 여러 하위 도메인으로 구분된다. 따라서 하위 도메인마다 같은 용어라도 의미가 다르고 같은 대상이더라도 지칭하는 용어가 다르기 때문에 한 개의 모델로 여러 하위 도메인을 모두 표현하려고 시도하면 적합하지…

  • Cascade WIKI

    Referential Integrity and Cascade

  • Knowledge WIKI

    Knowledge 를 반복하여 사용하지 말라

  • Intercepting Filter Pattern WIKI

    Core J2EE Patterns - Intercepting Filter

  • Mapstruct WIKI

    MapStruct is a code generator that greatly simplifies the implementation of mappings between Java bean types based on a convention over configuration approach.

  • Mapped Diagnostic Context WIKI

    The MDC is managed on a per thread basis. Use ThreadLocal.

  • GMT, UTC and Date API WIKI

    Date, Calendar, LocalDateTime, ZoneDateTime

  • Jackson WIKI

    Jackson has been known as "the Java JSON library" or "the best JSON parser for Java". Or simply as "JSON for Java".

  • Nested Class WIKI

    Nested Class and Inner Class

  • Sealed WIKI

    Sealed Class and Sealed Interface

  • BigDecimal WIKI

    자바의 float 과 Double 은 값의 정확성을 보장할 수 없다. 그 이유는 자바는 IEEE 754 부동소수점 방식을 사용하기 때문에 정확한 실수를 저장하지 않고 근사치 값을 저장한다.

  • Difference Between save and saveAndFlush WIKI

    save 는 insert or update 를 수행한다:

  • Entity Versioning WIKI

    Optimistic Lock with version columns

  • Message and Internationalization WIKI

    Localization is sometimes written in English as l10n, where 10 is the number of letters in the English word between l and n. Localization refers to the adaptation of a product, app…

  • OpenAPI Specification WIKI

    OpenAPI 또는 OpenAPI Specification(OAS) 는 Swagger 에서 발전한 API 명세 형태를 의미한다.

  • Automotive Sensor and Telsa Vision WIKI

    LIDAR is an acronym for Light Detection and Ranging . LIDAR normally measures a distance to an object by calculating the time taken by a pulse of light to travel to an object and b…

  • RelaxedMockk WIKI

    A relaxed mock is the mock that returns some simple value for all functions. This allows you to skip specifying behavior for each case, while still stubbing things you need. For re…

  • Validation WIKI

    검증은 Infrastructure, Domain, Application, Interfaces 계층 어느곳에서나 존재할 수 있다. 컨트롤러에서는 요청 파라미터가 적절한지 검증할 수 있으며, 도메인 레이어에서는 비지니스 업무 규칙에 적합한지 검증할 수 있고, 인프라스트럭쳐 레이어에서는 외부 통신의 결과가 적절한지 검증할 수…

  • TransactionManager WIKI

    Transaction Management

  • Architecture, Stability, and Productivity WIKI

    아키텍처(architecture) 란 서비스의 구조 를 의미합니다. 따라서, 아키텍처는 중요합니다.

  • Netty WIKI

    This code will handle only one connection at a time. To manage multiple, concurrent clients, you need to allocate a new Thread for each new client Socket.

  • Jdk Vendors WIKI

    오라클(Oracle)이 2010년에 Sun Microsystems 을 인수한 후 현재는 Oracle JDK 라는 이름이 되었다. Java SE 10 이후 부터는 6개월 마다 새 릴리즈가 나오고 있다.

  • Equality WIKI

    It calls Referential equality .

  • TrunkBasedDevelopment WIKI

    Scaled Trunk-Based Development :

  • Overengineering WIKI

    Overengineering and Yagni

  • First Class Collection WIKI

    Collection 을 Wrapping 하면서, 컬렉션 외에 다른 멤버 변수가 없는 상태를 일급 컬렉션이라고 한다. Wrapping 함으로써 다음과 같은 이점을 가지게 된다.

  • EnableTransactionManagement WIKI

    EnableTransactionManagement Annotation

  • Exploring Java Hidden Costs WIKI

    As Java 8 features comes to Android, it’s important to remember that every standard library API and language feature comes with an associated cost. Even as devices get faster and h…

  • LazyConnectionDataSourceProxy WIKI

    Proxy for a target DataSource, fetching actual JDBC Connections lazily. This DataSource proxy allows to avoid fetching JDBC Connections from a pool unless actually necessary.

  • OAuth WIKI

    OAuth is an HTTP-based authorization protocol. It gives third-party applications scoped access to a protected resource on behalf of the resource owner. It gives users the ability t…

  • Configuration Jar/BootJar in Spring Multi-module WIKI

    스프링 멀티모듈 구성 시 Jar, BootJar 옵션 설정하기

  • Kernels WIKI

    At the heart of the operating system

  • Component Scanning WIKI

    During startup, Spring instantiates objects and adds them to the application context. Objects in the application context are called “Spring beans” or “components”.

  • Data Cleansing WIKI

    Foreign Key 와 Data Cleansing

  • JavaBeans and Property WIKI

    JavaBeans 와 Kotlin, Java 에서의 Property

  • Actor Model and Akka WIKI

    Akka Streams 에서의 Actor Model

  • Reactor Pattern WIKI

    The reactor pattern, illustrated in Figure 3-2 in its most basic form, approaches both concurrency and parallelism. In the typical imple‐ mentation of the pattern, asynchronously r…

  • Duality in Reactive WIKI

    In category theory, a branch of mathematics, duality is a correspondence between the properties of a category C and the dual properties of the opposite category Cop.

  • Iterable WIKI

    /** * Implementing this interface allows an object to be the target of the "for-each loop" statement. * * @param <T> the type of elements returned by the iterator */ public interfa…

  • Deserialize Data Class WIKI

    코틀린 Data Class 역직렬화 하기

  • SOLID WIKI

    Gather together the things that change for the same reasons. Separate things that change for different reasons.

  • Configuring a Load Test Environment with k6 + grafana + influxdb WIKI

    k6 + grafana + influxdb 를 사용하여 부하 테스트 환경 구성하기

  • Test methods for improved availability and performance WIKI

    Load Test, Stress Test, Smoke Test

  • Kafka - Pretending to know a little WIKI

    한 개 파티션이 하나의 컨슈머에만 연결될 수 있다는 제한은 컨슈머 그룹 내에서만 제한이 되기 때문에 한 개 파티션을 서로 다른 컨슈머 그룹에서 공유할 수 있다.

  • Query Optimizing WIKI

    Index Range Scan 을 하기 위해서는 인덱스 선두 컬럼이 조건절에 있어야 한다.

  • Dockerizing WIKI

    도커라이징이란 도커 컨테이너를 사용하여 애플리케이션을 패키징, 배포 및 실행하는 프로세스이다.

  • Inline functions WIKI

    inline 변경자를 어떤 함수에 붙이면 컴파일러는 그 함수를 호출하는 모든 문장을 함수 본문에 해당하는 바이트코드로 바꿔치기 해준다.

  • Lambda WIKI

    람다는 값처럼 여기저기 전달할 수 있는 동작의 모음이다.

  • First Citizen WIKI

    Higher-Order Functions

  • Kubernetes Architectures WIKI

    Container 를 운영하다보면 아래와 같은 질문들이 생겨요.

  • Docker Container WIKI

    애플리케이션이 배포되는 환경을 서버에 직접 설치하여 구성할 경우, snowflake server 이슈에 직면합니다. 서비스가 점차 확장되면서 기존에 사용하던 서버와 새로 구축한 서버간에 설정의 차이가 발생하고, 관리자의 인적요소에도 영향을 받을 수 있습니다. 그리하여 기존에는 스크립트를 활용한 자동화 방식부터, kicks…

  • Theory WIKI
  • Refactoring WIKI
  • Mobility WIKI
  • KSP WIKI

    Kotlin Symbol Processing and Compiler Plugins

  • Companion Object WIKI

    Java 에서는 static field, method 들이 존재했지만 코틀린에서는 static 이 사라졌다. 대신 static 처럼 사용할 수 있는 companion object 가 존재한다.

  • Utility Class in Kotlin WIKI

    public final class JavaUtility { private JavaUtility () {} public static String getMethodName () { // ... } } 이러한 패턴은 코틀린에서 권장되지 않는다.

  • Spring Security WIKI

    final class ThreadLocalSecurityContextHolderStrategy implements SecurityContextHolderStrategy { private static final ThreadLocal < SecurityContext > contextHolder = new ThreadLocal…

  • Mockk WIKI

    Mockk which is similar to Mockito but better suited for Kotlin.

  • Deployment Strategy WIKI

    Rolling Update, Blue-Green, Canary

  • Standard Gradle WIKI

    Build tools are programs that automate the creation of executable applications from source code.

  • javaagent WIKI

    Provides services that allow Java programming language agents to instrument programs running on the JVM. The mechanism for instrumentation is modification of the byte-codes of meth…

  • Build Tool WIKI
  • CI/CD WIKI

    Continuous Integration, Delivery, Deployment

  • Backpressure WIKI

    Backpressure in software systems is the capability to overload the traffic communication.

  • Operating System WIKI
  • gRPC WIKI
  • Kubernetes WIKI
  • Declarative Transaction WIKI

    Declarative transaction management :

  • Kafka WIKI
  • Reactive WIKI
  • Magazine WIKI
  • Docker WIKI
  • Spring Framework Batch WIKI

    Job > Step > Tasklet 순서로 실행

  • Concurrency Resolution WIKI

    경쟁 상태란 두 개 이상의 스레드가 공유 데이터에 액세스할 수있고, 동시에 변경을 하려고 할 때 발생하는 문제이다. 다수의 프로세스 혹은 쓰레드가 동기화 없이 공유 자원(shared resources) 에 접근하여 값을 변경하려는 현상을 의미한다.

  • Factory WIKI

    어떤 객체나 전체 AGGREGATE 를 생성하는 일이 복잡해지거나 내부 구조를 너무 많이 드러내는 경우 FACTORY 가 캡슐화를 제공해 준다.

  • HTTP API Response Specification WIKI

    API 응답 체계는 시스템 전체가 일관되고 명확한 형태를 가지면, 어떤 구조든지 문제가 되지 않는다. 즉, API 응답이 명시적이고 일관되는 것이 가장 중요하다.

  • Graceful shutdown WIKI

    Graceful shutdown 은 서버 다운 시, 정상적인 종료 처리를 지원하는 기능이다.

  • STRATEGY WIKI

    전략 패턴은 한 유형의 알고리즘을 보유한 상태에서 런타임에 적절한 알고리즘을 선택하는 기법을 의미한다.

  • Template Method WIKI

    템플릿(Template) 이라는 단어에서 알 수 있듯이, 템플릿 메서드 패턴은 어떤 작업 알고리즘의 골격을 정의한다. 공통 기능과 세부기능을 갖도록 구현할 수 있으며, 세부 기능은 서브 클래스마다 달라질 수있다. 즉, 템플릿 메서드를 이용하면 알고리즘의 구조를 그대로 유지하면서 특정 단계만 서브 클래스에서 새로 정의하도록…

  • Surrogate Key WIKI

    대체키(Surrogate key)란 자연키에 대한 대체용으로 인공적이거나 합성적인 키를 말하며, 주로 주민등록번호 같은 중요한 자료를 숨기기 위해 대체키로 사용하거나, 여러 개의 컬럼을 합성하여 검색 시 속도 향상을 위해 사용한다.

  • Domain Service WIKI

    When a significant process or transformation in the domain is not a natural responsibility of an ENTITY or VALUE OBJECT, add an operation to the model as standalone interface decla…

  • Development Design Documents WIKI

    개발을 시작하기 전에, 개발 디자인 문서를 작성하고 팀원들과 공유, 리뷰하는 과정을 거치면 좋은 방향성을 잡을 수 있다. 또한 인수인계 과정에서도 코드와 개발 디자인 문서를 함께 전달하면 비교적 빠른 인수인계가 가능할 것이다.

  • Glossary WIKI
  • Git command Cheat Sheets WIKI

    깃 명령어 모음집

  • HTTP Headers WIKI

    요청과 응답 양쪽에 모두 사용하는 헤더 필드, 헤더가 사용되고있는 컨텍스트에 따라 request header 또는 response header 로 분류된다. entity header 는 아니다.

  • Public IP, Private IP, Elastic IP WIKI

    공인 IP, 사설 IP, 탄력적 IP

  • Access to EC2 WIKI

    EC2 에 접속하기 with Bastion Server

  • Incident, Defect tracking WIKI

    시스템에 장애가 발생하면, 장애 보고서를 작성하게 된다. 그 후, 장애를 해결하고, 재발을 방지하기 위한 과정을 거치게 된다.

  • Security Group WIKI

    Inbound, Outbound 규칙

  • How to Implementation Clean Architecture ? WIKI

    Clean Architecture 에 따른 각 Layer 의 구현 방식

  • What is a good implementation? WIKI

    좋은 구현이란

  • Memory Leak WIKI

    Memory Leak 이란 heap memory 에 할당된 객체들이 GC(Garbage Collector)에 의해 제거되지 않아, 불필요한 객체들이 메모리에 계속 남아있는 현상을 의미한다.

  • TCP Performance WIKI

    흐름 제어(Flow Control)는 송신자가 수신자에게 처리하지 못할 만큼의 많은 데이터를 전송하는 것을 미리 방지하는 매커니즘이다. 수신자가 데이터를 받지 못하는 경우는 보통 수신자가 다른 데이터를 처리하고 있거나, 밀려 있는 데이터가 많아서 버퍼 공간을 충분히 지정해주지 않는 경우다. 이러한 문제를 해결하기 위해 양…

  • AWS Elastic Beanstalk WIKI

    웹 애플리케이션을 서비스 할 때, NodeJS, Django 등의 플랫폼도 설치해야하고, 지속적으로 버전도 업데이트 해줘야하는 불편함이 있다. 또한 서버에 소스를 업로드 했는데 문제가 생기면 긴급하게 이전 버전으로 되돌려야 한다.

  • Git Internal WIKI

    objects 디렉터리는 실제 파일 안의 내용을 SHA-1 로 해시한 값에서 앞의 2자리를 폴더명으로, 나머지 38 자리를 파일 명으로 두어 식별자 형태로 사용한다.

  • Git basic WIKI

    깃은 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템이다.

  • JDBC WIKI

    Connection Pool, HikariCP, TCP 3-way Handshake

  • TCP Health Check WIKI

    $ sar -n DEV,TCP,ETCP 5 Linux 5.3.0-1032-aws ( ip-192-168-0-207 ) 08/13/20 _x86_64_ ( 2 CPU ) 23:17:08 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil 23:17:13…

  • USE methodology WIKI

    주로 CPU utilization, Available memory, RX/TX 패킷량, Disk 사용률, IOPS 등을 확인한다.

  • Availability and Performance WIKI

    시스템이 서비스를 정상적으로 제공할 수 있는 상태

  • Serverless WIKI

    Amazon API Gateway, AWS Lambda

  • Load Test WIKI

    장애가 없는 서비스를 만들 수는 없다. 장애가 나더라도 쉽게 복구 가능한 장애 내성을 가진 서비스를 만드는 것이 중요하다.

  • Web Performance Budget WIKI

    어느정도까지 허용 가능한지 목표를 정해야 한다.

  • Web Page Test WIKI

    CDN 덕분에 가까운데서 keep-alive 설정으로 connection 을 재사용하고 캐싱으로 요청 수를 최소화하여 gzip 압축을 통해 각 리소스의 전송 인코딩을 최적화하고 이미지를 압축하여 패킷 사이즈를 줄여 네트워크 비용을 줄일 수 있다.

  • Performance and Revenue WIKI

    고객 창출과 고객 만족

  • Internet Gateway vs NAT Gateway WIKI

    Gateway 란, 서로 다른 통신망 혹은 프로토콜 간 네트워크 통신을 가능하게 하는 구성요소를 의미한다. 내부망에서 외부망간에 통신을 할 때는 서로 다른 통신망이므로 gateway 가 이를 중계한다.

  • bashrc, profile, hosts WIKI

    /etc/hosts 와 bashrc(or bash_aliases) 그리고 profile 은 각각 사용 목적이 다르다.

  • Git WIKI
  • Real-time Web Communication WIKI

    Polling, Long-Polling, WebSockets, Server-Sent Events

  • Reverse Proxy WIKI

    WAS(Web Application Server) 는 애플리케이션 로직을 처리하는데 특화되어있다. WebServer 와 WAS 를 분리하는 이유는 WAS 에서 너무 많은 역할/책임을 담당하게 되면 가장 비싼 애플리케이션 로직이 정적 리소스 때문에 수행이 어려울 수 있다.

  • Coroutines WIKI

    코루틴은 컴퓨터 프로그램 구성 요소 중 하나로 비선점형 멀티태스킹(non-preemptive multitasking)을 수행하는 일반화한 서브루틴(subroutine)이다. 코루틴은 실행을 일시 중단(suspend) 하고, 재개(resume)할 수 있는 여러 진입 지점(entry point)을 허용한다.

  • Kotlin Simple Syntax WIKI

    코틀린이 간결한 구문을 지원하는 방법

  • Bastion Server WIKI

    Bastion 이란, 성 외각을 보호하기 위해 돌출된 부분으로 적으로부터 효과적으로 방어하기 위한 수단이다. 이를 아키텍처에도 적용할 수 있다.

  • How to prevent SQL Injection In Spring Framework WIKI

    Spring, JPA 에서 SQL Injection 을 방어하는 방법

  • Docker Container WIKI

    애플리케이션이 배포되는 환경을 서버에 직접 설치하여 구성할 경우, snowflake server 이슈에 직면한다. 서비스가 점차 확장되면서 기존에 사용하던 서버와 새로 구축한 서버간에 설정의 차이가 발생하고, 관리자의 인적요소에도 영향을 받을 수 있다. 그리하여 기존에는 스크립트를 활용한 자동화 방식부터, kickstar…

  • HTTP status codes used by world-famous APIs WIKI

    Used by either one of them : 200, 201, 202, 204, 301, 302, 303, 304, 307, 308, 400, 401, 402, 403, 404, 405, 406, 408, 409, 410, 411, 412, 413, 416, 420, 422, 429, 500, 501, 502, 5…

  • VPC and Subnet WIKI

    VPC 는 하나의 서비스를 위한 네트워크를 다루는 단위이다. VPC 에서는 서브넷과 라우팅 테이블, 인터넷 게이트웨이 등을 설정할 수 있다.

  • Collision Domain WIKI

    Collision Domain 이란, Half Duplex 로 다중접속환경(Multiple Access)를 구성했을 경우, 데이터를 동시에 전송했을 때 충돌이 일어날 수 있는 영역을 의미한다. 따라서 허브를 통해 MA 를 만들었을 경우, 허브는 1계층 장비이기 때문에 신호 증폭, 즉 Collision Domain 을 확장…

  • Network Segmentation WIKI

    망분리를 하는 이유는 개인 정보를 다루는 DB 서버 등을 위한 내부망, 사용자가 접근하는 웹 서버를 위한 외부망을 구성한다.

  • Cloud WIKI

    Cloud 는 인터넷을 통해 원격으로 접근할 수 있는 모든 것을 의미한다. 즉, 클라우드 서비스란 인터넷으로 제공되는 서비스(메일, 드라이브 등)를 의미한다.

  • The Road to the New Kotlin Compiler K2 WIKI

    Kotlin Compiler 는 source code 를 JVM, JS, Native 라는 세가지의 대상 플랫폼에 사용할 수 있도록 각각의 machine code 로 컴파일 한다.

  • Reactive Manifesto WIKI

    소프트웨어 아키텍처란 소프트웨어를 구성하는 요소와 그 구성요소 간의 관계를 정의한 것이다. 또한 아키텍처를 정의하는 과정은 시스템 구축을 위한 여러 가지 비기능 요건(성능, 가용성, 보안, 유지보수성, 확장성 등)을 만족하는 다양한 해결 방법을 찾는 과정이다.

  • Fault Tolerance WIKI

    아마존 부사장인 버너 보겔스(Werner Vogels)는 소프트웨어는 모두 실패한다라고 말한바 있다. 실패에 빠르게 대응할 수 있도록 설계해야 한다는 말이다. 이를 내결함성(fault tolerance)이라고 한다.

  • JWT WIKI

    JWT(JSON Web Token) 는 클라이언트와 서버, 서버와 서버 사이 통신시 권한 인가(Authorization) 및 인증(Authentication)을 위해 사용되는 JSON 형식의 웹 토큰이다.

  • Polyglot Persistence WIKI

    Polyglot 은 특정 서비스를 구축하는데 사용되는 언어나 저장소를 자율적으로 선택할 수 있는 방식을 의미한다.

  • Infrastructure as Code WIKI

    Infrastructure as Code 란 코드를 이용해 인프라 구성부터 애플리케이션 빌드, 배포를 정의하는 것을 의미

  • Business Agility WIKI

    아마존, 넷플릭스, 우버 등 성공한 유니콘 기업들의 공통점은 자신만의 특화된 서비스를 제공하기 위해 빠르게 실행하며 사용자들의 피드백을 반영해 끊임없이 개선한다는 점이다. 이러한 특징을 비지니스 민첩성(business agility)이라고 한다.

  • Express WIKI

    Node.js 를 위한 빠르고 개방적인 간결한 웹 프레임워크

  • Considerations for Queries and Indexing WIKI

    데이터를 얼마나 적게 조회할 것인지가 핵심

  • Recursion and Memoization WIKI

    스택과 재귀, 자바와 코틀린에서의 꼬리 재귀

  • Progression and Range WIKI

    Progression 은 시작점과 끝점이 있으면 구간을 지정할 수 있다. Range 와 다르게 증가 값이 1 이상이 될 수 있다.

  • Open range and Close Range WIKI

    열린 범위란 끝 값을 포함하지 않는 범위를 의미한다.

  • Cookie, Session, Storage WIKI

    로컬스토리지와 세션스토리지가 등장하기 이전에도 브라우저에 저장소의 개념이 존재했는데, 그 역할이 바로 쿠키(Cookie)다.

  • Event Loop and Call Stack in JS WIKI

    JS 와 Node 의 동작은 Call Stack, Background, Task Queue 만 기억하면된다.

  • Execution of Java Program WIKI

    컴파일이란 고수준 프로그래밍 언어(High-Level Programming Language, HLL)로 작성된 프로그램을 소스 코드에서 객체 코드(Object Code)로 변환하는 것을 의미한다.

  • Environment Settings WIKI

    이직을 하게 되면 대부분의 회사에서 첫날은 환경설정과 온보딩 등을 진행할 것이다. 본인만의 환경 설정 가이드가 있다면 쉽고 빠르게 환경 설정을 끝낼 수 있을 것이다.

  • Async Annotation WIKI

    public class Async { static ExecutorService executorService = Executors . newFixedThreadPool ( 5 ); public void asyncMethod ( final String message ) throws Exception { executorServ…

  • Character Encoding WIKI

    문자열 인코딩(Character Encoding)은 컴퓨터가 이해할 수 있도록 인간의 언어를 2진수로 변환하는 방식을 말한다.

  • Singleton WIKI

    싱글톤 패턴은 객체가 프로그램 내부에서 단 1개만 생성됨을 보장하며 멀티 스레드에서 이 객체를 공유하며 동시에 접근하는 경우에 발생하는 동시성 문제도 해결해주는 디자인 패턴이다.

  • HikariCP WIKI

    光 HikariCP・A solid, high-performance, JDBC connection pool at last.

  • Aggregate WIKI

    개별 객체 수준에서 모델을 바라보면 상위 수준에서 관계를 파악하기 어렵다. 도메인 객체 모델이 복잡해지면 개별 구성요소 위주로 모델을 이해하게 되고 전반적인 구조나 큰 수준에서 도메인 간의 관계를 파악하기 어려워진다.

  • Fundamental Object-Oriented Programming WIKI

    OO design is more important than any particular implementation technology (such as J2EE, or even Java). And now important than even Spring or Hibernate. Good Programming practices…

  • Infra WIKI
  • Network Layered Architectures WIKI

    다양한 계층의 프로토콜을 모두 합하여 프로토콜 스택이라고 한다.

  • Index WIKI

    데이터를 읽기 위해서는 헤드를 움직여 데이터가 저장된 위치(트랙)를 찾아야 한다. 이때 소요되는 시간을 탐색 시간(seek time) 이라고 한다. 그 후 원하는 정보가 있는 섹터가 다가올 때까지 기다리는데 이때의 시간을 회전 대기 시간(rotational latency time) 이라고 한다.

  • Auth WIKI

    AuthN, AuthR

  • Javascript WIKI
  • Slf4j, Logback WIKI

    Simple Logging Facade for Java

  • HTTP WIKI
  • ETC WIKI
  • Software Development Methodology WIKI

    대부분의 경우 테스트 가능한 애플리케이션을 목표로 할 경우 훌륭한 애플리케이션 코드를 작성하게 된다. - Rod Johnson

  • Java WIKI
  • Kotlin Philosophy WIKI

    코틀린의 철학

  • NodeJS WIKI
  • Clean Code Guide WIKI

    클린 코드를 작성려고 노력하는 행위는 개발자라면 당연히 갖춰야한다. 클린 코드는 이해하기 쉽고 변경하기 쉬운 코드를 의미한다.

  • Dependency Injection WIKI

    IoC(Inversion Of Control)는 제어의 역전 이라고 한다. 제어의 역전이란 프로그램의 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것 을 의미한다.

  • PSA WIKI

    Portable Service Abstraction

  • Deep Dive Spring Converter, Formatter WIKI

    핸들러 메서드에 @ModelAttribute 가 지정되면 다음과 같은 일이 일어난다.

  • Concurrency WIKI

    동시성 이슈란 코드 측면에서는 여러 스레드가 동시에 같은 인스턴스의 필드 값을 변경 하면서 발생하는 문제를 의미하며, 데이터베이스 측면에서는 스레드간 공유되는 컬럼의 값을 변경 하면서 발생하는 문제를 의미합니다. 핵심은 멀티 스레드 환경에서 공유 자원(shared resources) 을 변경 함으로써 발생되는 문제를 동시…

  • DDD Meaning WIKI

    DDD 는 도메인을 구성하는 각 하위 도메인(애플리케이션의 문제 공간(problem space)을 가리키는 DDD 용어)마다 도메인 모델을 따로 정의합니다. 하위 도메인은 비즈니스 능력과 같은 방법(비즈니스를 분석하고 상이한 전문 영역을 식별)으로 식별하므로 십중팔구 비즈니스 능력과 유사한 하위 도메인이 도출됩니다. 가령…

  • POJO WIKI

    POJO 방식으로 개발을 했다면 반드시 테스트를 작성 해야 하며, 그래야 POJO 를 POJO 답게 쓰게하고 그 가치를 누릴 수 있다.

  • Extreme Programming WIKI

    XP(Extreme Programming) 은 사회적 변화에 대한 것이다.

  • Sequence vs Iterable WIKI

    코틀린의 Sequence 와 Iterable 비교

  • DESIGNPATTERN WIKI

    디자인 패턴의 가장 중요한 목적은 코드를 DECOUPLING 하는 것이다.

  • Network WIKI

    네트워크

  • Code Quality WIKI
  • DataStructures WIKI
  • Database WIKI

    데이터베이스

  • Kotlin WIKI

    코틀린

  • Spring Framework WIKI

    스프링 프레임워크

  • Methodology WIKI

    소프트웨어 개발 방법론

  • Redis WIKI
  • GPT WIKI

    ChatGPT

  • Artifact WIKI
  • The server setting guide using Apache and Tomcat in CentOS7 MEDIUM

    CentOS7 에서 Apache, Tomcat 을 사용하여 운영 서버 환경을 설정하는 방법에 대해서 배워 보겠습니다.

  • SI, Agency 에서 첫 시작을 하고 있는 개발자들을 위하여 MEDIUM

    SI, Agency 회사에서 2년간 근무하면서 경험한 다양한 내용들을 공유하고자 합니다. SI, Agency 에서 첫 시작을 하고 있는 개발자들(혹은 시작 예정인 개발자들)이 웹 애플리케이션을 개발하거나 배포할 때 꼭 지켜야할 것들과 조언을 드리고자 글을 작성하게 되었습니다.

  • DB 조건절에 Null 허용 컬럼 사용 시 주의할 점 MEDIUM

    쿼리 조건절에 Null 허용 컬럼에 대한 존재여부를 판단하는 조건을 넣을 때 주의해야할 점에 대해서 배워보겠습니다.

  • 웹은 어떻게 동작할까? (How Does The Web Work?) MEDIUM

    본 게시글은 원작자(Chuck choi) 께 원문 How Does The Web Work ? 게시글 번역 허락을 구하고 작성한 글입니다. 번역 과정에서 원문 내용에 대한 첨삭이 일어났으므로 원문 내용과 다른 부분이 있을 수 있습니다. 또한, 본 게시글에 사용된 이미지의 사용 권한은 원작자에게 있습니다.

  • Clean Code Guide For Beginners MEDIUM

    클린 코드란 읽고 이해하기 쉬운 코드베이스 를 의미합니다. 우리는 개발 과정에서 개발만 하는것이 아닌 유지보수 활동도 같이합니다. 개발하는 동안 혹은 서비스 오픈 후에도 요구사항은 계속 바뀌며, 바뀐 요구사항을 적용하기 위해 자신의 코드를 수정하는 행위 자체가 유지보수하는 것입니다. 따라서, 유지보수성을 생각하는 개발자라…

  • 시퀀스를 사용하여 경쟁 상태 피하기 MEDIUM

    테이블의 PK 를 인조키로 잡고, PK 생성 방식을 MAX+1 이나 SEQUENCE 로 사용하는데, 두 방식의 차이점에 대해서 알아보고 경쟁 상태를 피하기 위해서 어떤 방식을 사용해야 하는지 배워보겠습니다.

  • CentOS7 에서 ElasticSearch 설치 및 설정하기 MEDIUM

    CentOS7 환경에서 ElasticSearch 를 설치하고 설정하는 방법에 대해서 배워보겠습니다.

  • DB 인코딩이 US7ASCII 인 경우에 한글 처리 방법 MEDIUM

    DB 인코딩이 US7ASCII 인 경우에 “뷁, 퉭” 과 같은 특이한 한글들은 물음표(?)로 저장이 되는데, 올바르게 한글로 DB 에 저장되게끔 인코딩 하는 방법에 대해서 배워보겠습니다.

  • 화폐혁명을 읽고 정리한 글 MEDIUM

    2021년 상반기 부터 비트코인 열풍이라고 할 정도로 많은 사람들이 암호화폐에 관심을 가졌습니다. 저 또한 관심이 생겨서 화폐혁명 이라는 책을 읽고 암호화폐와 가상화폐 그리고 블록체인에 대한 내용을 정리하여 공유해드리고자 합니다.

  • 자바, 올바르게 정규식 패턴 사용하기 MEDIUM

    자바에서 정규식을 사용할때 java.util.regex.Pattern 을 자주 사용합니다. Pattern 클래스를 이용한 정규식을 잘 못사용하면 성능이 많이 떨어질 수 있습니다. 따라서, 올바른 Pattern 클래스의 사용법에 대해서 배워보겠습니다.