- [ Programming Note ]MongoDB Change Stream으로 구현하는 서버 간 실시간 데이터 공유2025-08-05 16:57:22필자가 최근 개발 외주를 진행하며 발생했던 요구사항을 공유하고자 한다. 요구 사항서버의 구성은 Proxy 서버를 앞에 두고 그 뒤에 여러 개의 백엔드 서버가 붙어서 동작한다. Proxy 서버는 벡엔드 서버를 별칭으로 가지고 있어 사용자가 별칭을 이용한 접속 요청에 따라 라우팅하여 백엔드 서버로 접속시키는 역할을 한다. 이러한 구조는 기본적으로 각각 백엔드 서버가 완전히 독립되어있고 백엔드 서버 간 통신이 되지 않는다. 그렇기 때문에 백엔드 서버 간 데이터 공유가 필요할 경우 플러그인으로 개발하여 해결하여야 한다. 기존에는 Redis Pub/Sub 기능을 사용하여 이를 자주 해결했었다. Proxy 서버를 통하는 Plugin Messaging이라는 기능이 있지만 이 기능은 메시지를 수신하여야 하는 서버에 사..
- [ Programming Note ]CLOB과 BLOB2025-04-08 14:26:41대용량 데이터를 저장하고 처리할 때 CLOB과 BLOB은 매우 유용한 데이터 타입이다. 각각의 특징과 용도를 자세히 살펴보면, 어떤 상황에서 어느 타입을 선택해야 할지 명확해진다.발음 참고: 흔히 "클롭, 블롭"으로 읽히지만, Oracle 공식 문서에 따르면 올바른 발음은 '씨랍'과 '비랍'이다.CLOB의 특징CLOB (Character Large Object)는 대량의 텍스트 데이터를 저장할 수 있는 데이터 타입이다.저장 용량: 일반적으로 최대 4GB까지 저장 가능하며, 데이터베이스 시스템에 따라 다를 수 있다.용도: 긴 문서, HTML/XML 문서, 다양한 언어(UTF-8, UTF-16 등)로 된 콘텐츠 등 대용량 텍스트 데이터 관리에 최적화되어 있다.기능: 텍스트 검색과 조작이 용이해 문서 버전 관..
- [ Programming Note ]Session Storage, Local Storage, IndexedDB2025-04-04 14:40:30웹 애플리케이션에서 클라이언트 측 데이터 저장 방식으로 Session Storage, Local Storage, IndexedDB가 있다. 이 저장소들은 각각 고유한 목적과 특성을 가지고 있어, 다양한 웹 개발 시나리오에 유연하게 대응할 수 있다. 1. Session StorageSession Storage는 브라우저 세션 동안에만 임시로 데이터를 저장하는 클라이언트 측 저장소이다. 사용자가 브라우저 탭을 닫거나 새로고침 하면 저장된 데이터가 즉시 삭제된다. 이는 단기적이고 일시적인 데이터 관리에 최적의 설루션이다. 장점- 세션 고유의 데이터 관리- 직관적이고 간편한 데이터 조작 단점 - 일시적인 데이터 저장// 데이터 저장sessionStorage.setItem("username", "JohnDoe")..
- [ Programming Note ]컴퓨터에서 수와 문자의 표현2025-03-24 00:56:41비트(Bit)와 바이트(Byte)컴퓨터는 2진수를 사용한다. 전기를 이용하여 표현할 수 있는 건 전기가 흐르거나(1) 전기가 흐르지 않거나(0)로 2가지뿐이라는 것이다. 이 최소 단위를 비트(Bit)라고 부른다. 언뜻 보이기에는 2진수를 이용해 표현할 수 있는 것이 많아 보이진 않지만 이 비트를 여러 개 조합하면 아주 많은 것들을 표현할 수 있다. 이 비트를 4개만 합쳐도 0000, 0001, 0010, 0011, 0100, 0101, 0110… 1111까지 2^4개인 16개 표현이 가능해진다. 비트를 늘릴수록 2의 제곱수로 가짓수가 늘어나므로 부족하진 않은 셈이다. 하지만 우리는 컴퓨터를 사용하면서 비트라는 단위보다 더 많이 듣는 단위가 있다. 바로 바이트(Byte)이다.바이트는 8개의 비트를 합친 크..
- [ Programming Note ]Docker 원격 사용 및 Docker Engine API2024-12-19 17:16:23Docker는 기본적으로 Server-Client 구조로 되어있기 때문에 원격 사용이 가능하다.우리가 흔히 사용하는 Docker CLI는 Client이고 모든 기능은 Docker Daemon이라는 Server를 호출하여 사용하는 구조이다. 이를 모두 묶어서 Docker Engine이라고 부른다.(Docker Desktop은 Docker CLI를 포함하고 있으며 GUI 환경으로 Docker CLI를 간편하게 사용하기 위한 도구이다.) 위 이미지에서 보는 것과 같이 Docker daemon은 REST API를 제공하고 이를 통해 사용이 가능한 구조이다. 그렇기 때문에 설정만 한다면 원격에서 REST API를 사용하여 Docker daemon에 접근할 수 있다.Daemon 확인 후 서비스 수정하기docker ..
- [ Programming Note ]변수의 Scope란2024-12-18 17:25:54프로그래밍 언어론에서는 변수의 Scope(이하 스코프)에 대한 내용을 다룬다. 스코프는 변수에 접근할 수 있는 범위를 말한다. 1. Global Scope & Local Scope전역 스코프(Global Scope)가장 바깥쪽에 있는 레벨의 스코프를 전역 스코프라고 한다. 이 전역 스코프 레벨에 선언되는 변수를 전역 변수라고 한다. 지역 스코프(Local Scope)전역 스코프 내의 블럭을 모두 지역 스코프라고 한다. 또한 이 스코프 내에 선언된 변수를 지역 변수라고 한다. 만약 이러한 스코프가 중첩되어 있고 상위 스코프에 선언된 변수와 동일한 이름으로 하위 스코프에 선언된 경우 가장 인접한 스코프에 선언된 변수가 우선 순위를 갖는다.//전역 스코프const a = 100; //전역 변수function ..
- [ Programming Note ]대칭키 암호화, 비대칭키 암호화, 단방향 암호화2024-12-03 16:57:32암호화 방식은 크게 대칭키 암호화, 비대칭키 암호화, 단방향 암호화로 구분할 수 있다. 각 암호화 방식은 서로 다른 특징이 있어 특정 용도에 따라 암호화 방식을 선택하게 된다. 대칭키 암호화란대칭키 암호화는 암호화와 복호화에 동일한 키를 사용하는 암호화 방식이다. 이는 가장 기본적이고 단순한 형태의 암호화 방식으로, 하나의 비밀키로 데이터를 암호화하고 같은 키로 암호화된 데이터를 복호화한다. 대칭키 암호화의 주요 특징은 아래와 같다.암호화와 복호화에 같은 키를 사용빠른 암호화/복호화 속도키의 길이가 상대적으로 짧음안전한 키 교환 방식이 필요이러한 대칭키 암호화 알고리즘은 다양한데 대표적으로 DES(Data Encryption Standard), AES(Advanced Encryption Standrard..
- [ Programming Note ]프레임워크(Framework)와 라이브러리(Library)의 차이2024-12-02 17:12:31소프트웨어 개발을 할 때 라이브러리(Library)와 프레임워크(Framework)라는 용어를 자주 접하고 사용도 해본다.이 두 가지 모두 개발자가 코드를 작성하고 관리하는 데 도움을 주는 것은 비슷하지만, 실제 역할과 사용 방법에 있어서 중요한 차이가 있다.라이브러리(Library)라이브러리는 특정 기능이나 작업을 수행하는 데 사용되는 재사용 가능한 코드 모음이다. 예를 들어서, 수학적 계산을 위한 함수 집합이나 데이터베이스 접근을 위한 도구 같은 것들이 라이브러리에 포함된다. 라이브러리는 개발자가 필요할 때 호출하여 사용할 수 있는 모듈 형태로 제공된다. 라이브러리는 아래와 같은 특징을 가진다.재사용성 : 여러 프로젝트에서 동일한 라이브러리를 재사용할 수 있어 코드의 중복 최소화모듈성 : 특정 기능에..
- [ Programming Note ]SSL/TLS란?2024-12-02 14:37:33SSL(Secure Sockets Layer)와 TLS(Transport Layer Security)는 다른 프로토콜이다. 메시지 인증 방식과 Cipher Suite의 차이가 있지만, TLS가 SSL에 기반하여 보안 취약점을 해결한 프로토콜이고, 현재는 SSL을 완전 대체하여 SSL은 더 이상 사용되지 않아 사람들은 거의 동의어처럼 사용한다. 우선 TLS는 보안 연결을 위해 사용하는 프로토콜인데 TLS를 말하기에 앞서 TCP 3-Way Handshake, 대칭키 암호화, 비대칭키 암호화 이 3가지를 먼저 짚고 넘어가고자 한다.TCPTLS는 TCP 위에서 작동하는 보안 프로토콜이기 때문에 TCP의 연결 수립 이후에 TLS 보안 연결 수립이 진행된다.우선 TCP는 3-Way handshake로 연결 수립이 ..