일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 안드로이드스튜디오
- 동적계획법과최단거리역추적
- cos pro
- 코드품앗이
- C++
- Flutter
- 안드로이드
- 코딩테스트
- issue
- 개발
- 동적계획법
- cos
- codingtest
- Python
- cos pro 1급
- android
- k8s
- 분할정복
- django
- 파이썬
- 알고리즘
- BAEKJOON
- 백준
- Algorithm
- DART
- 코테
- DFS와BFS
- DFS
- AndroidStudio
- vuejs
- Today
- Total
목록Research (33)
Development Artist
1. SQL 파싱과 최적화구조적, 집합적, 선언적 질의 언어내용SQL은 일반적인 프로그래밍 언어와 달리, 다음 세 가지 특성을 동시에 지닌 고수준 질의 언어입니다.구조적 (Structured) 정해진 문법과 형식에 따라 명확하게 작성되어야 하며, 테이블(관계형 데이터)을 중심으로 동작합니다. 구문은 SELECT, INSERT, UPDATE, DELETE와 같은 키워드로 시작하며, 각 절(clause)이 구조적으로 구성됩니다.집합적 (Set-based) SQL은 데이터 하나하나가 아닌 데이터의 집합을 대상으로 연산을 수행합니다. 따라서 반복문 없이도 수천 건의 데이터를 동시에 처리할 수 있으며, 이는 데이터베이스 엔진의 최적화와 병렬 처리의 기반이 됩니다.선언적 (Declarative) SQL은 무엇..
총 23개 패턴: GoF 디자인 패턴1. 전략 패턴 (Strategy)개요: 전략 패턴은 알고리즘을 하나의 객체로 캡슐화하여 실행 중에 동적으로 교체할 수 있도록 해주는 패턴이다.동일한 기능을 여러 방식으로 구현해야 할 때 유용하며, 클라이언트 코드와 알고리즘 구현을 분리해 유연성을 높인다.원리: 공통 동작을 정의하는 인터페이스(또는 추상 클래스)를 만들고, 다양한 알고리즘을 각각의 전략(Strategy) 클래스로 구현한다.클라이언트는 이 전략 객체를 주입받아 필요에 따라 알고리즘을 선택하거나 변경할 수 있다.장점: 알고리즘을 독립적으로 정의하고 교체할 수 있어 코드 재사용성과 유지보수성이 뛰어나다.새로운 전략을 추가해도 기존 코드를 수정하지 않으므로 OCP(개방-폐쇄 원칙)를 충족시킨다.단점: 전략마다..
개요FastAPI를 설치하면 다음과 같은 패키지들이 자동으로 설치됩니다. 각 패키지의 역할에 대해 자세히 알아보겠습니다.annotated-types==0.7.0anyio==4.9.0fastapi==0.115.12idna==3.10pydantic==2.11.3pydantic_core==2.33.1sniffio==1.3.1starlette==0.46.2typing-inspection==0.4.0typing_extensions==4.13.2각 패키지 설명1. fastapi==0.115.12역할: 타입 힌트를 사용하는 고성능 Python 웹 프레임워크입니다. RESTful API 개발에 최적화되어 있습니다.기반: Starlette (ASGI 웹 프레임워크) + Pydantic (데이터 유효성 검사)특징:자동 문..
서론쿠버네티스(Kubernetes)는 단지 컨테이너 오케스트레이션 시스템이 아니다. 그것은 복잡한 분산 시스템의 ‘논리적 질서(logical order)’를 추구하는 운영 체계이자 철학이다. 이 철학의 핵심에는 다음 세 가지 리소스가 있다: 네임스페이스(Namespace), 컨피그맵(ConfigMap), 그리고 시크릿(Secret). 이 글에서는 해당 세 리소스가 어떻게 쿠버네티스의 구조적 복잡성을 통제하고, 실제 운영 환경에서 어떤 가치를 제공하는지 학문적으로 탐구하고자 한다.1. Namespace: 멀티테넌시와 격리의 시작점1.1 정의Kubernetes에서 Namespace는 리소스를 논리적으로 분리하는 단위이다. 리눅스에서의 chroot나 가상 메모리 공간처럼, 네임스페이스는 쿠버네티스 클러스터 내..
“In theory, there is no difference between theory and practice. In practice, there is.”– Jan L. A. van de Snepscheut서론현대의 분산 시스템에서 마이크로서비스 아키텍처(MSA)는 서비스 간의 유기적인 연결을 전제로 한다. 그러나 컨테이너 기반의 인프라에서 컨테이너는 생성과 소멸이 자유로운 반면, 그들 간의 네트워크 주소는 영속적이지 않다. 이때 등장하는 개념이 바로 쿠버네티스 서비스(Kubernetes Service)이다.쿠버네티스 서비스는 동적으로 변하는 파드(Pod) 들에 대해 안정적인 네트워크 접근점을 제공한다. 본 칼럼에서는 쿠버네티스 서비스의 개념적 정의부터 동작 원리, 유형별 특성, 그리고 실무에서의 응용..
서론쿠버네티스(Kubernetes)는 클러스터 기반의 애플리케이션 운영을 표준화하는 강력한 오픈소스 플랫폼이다. 하지만 설치와 운영은 여전히 복잡하고, 사용 목적이나 인프라 환경에 따라 다양한 설치 도구를 선택해야 한다. 이번 글에서는 세 가지 대표적인 설치 도구인 Kubespray, kubeadm, kops의 특징과 장단점을 비교하여, 상황에 따라 어떤 도구가 적절할지 살펴보자.1. KubesprayKubespray는 Ansible을 기반으로 하는 프로덕션 수준의 쿠버네티스 설치 자동화 도구이다. 다양한 클라우드 및 온프레미스 환경에 대응할 수 있으며, 고가용성(HA) 구성도 지원한다.주요 특징Ansible 기반의 선언적 인프라 관리다양한 클라우드 및 베어메탈 지원고가용성 클러스터 구성 지원커스터마이징..
들어가며패턴에 대한 공부를 하면서 가장 먼저 생각하는 것은 “그 패턴이 없을 때 코드를 먼저 짜보라. 어떤 부분을 해소하기 위함인가” 컴포지트(Composite) 패턴도 마찬가지다. 객체를 트리 구조로 표현하고, 개별 객체와 복합 객체를 동일하게 다루기 위한 이 패턴은, 없으면 코드가 얼마나 지저분해질 수 있는지를 몸소 느껴야 진가를 알 수 있다. 이 글에서는 컴포지트 패턴이 없는 세상이 얼마나 고통스러운지를 실제 사례와 함께 살펴보고, 이를 통해 왜 이 패턴이 중요한지 풀어보고자 한다.컴포지트 패턴이 없는 세상1. 클라이언트 코드가 복잡해짐 (타입 분기 지옥)컴포지트 패턴이 없으면 가장 먼저 눈에 띄는 문제는 클라이언트 코드가 쓸데없이 복잡해진다는 것이다.if (obj instanceof Leaf)..
서론서비스 하나를 띄운다는 건 생각보다 많은 일을 수반합니다.백엔드 서버 하나만 있어도 DB가 필요하고, 캐시가 필요하고, 때로는 메시지 큐나 외부 API 목업 서버까지 붙어야 하죠. 그때마다 우리는 명령어를 반복합니다.docker run ...docker run ...docker run ...처음엔 재밌을 수 있지만, 곧 지칠겁니다."이 많은 걸 왜 매번 따로 띄워야 하지?""내가 띄운 환경을 다른 팀원도 그대로 재현하려면 어떻게 하지?" 이런 반복적인 부분 뿐만이 아닙니다.팀원들의 다양한 요구사항을 관리하기에는 쉽지 않았기 때문입니다."내 애플리케이션은 DB 없이는 작동하지 않아요.""Redis도 필요하고, Celery도 있어야 해요.""그러면 그걸 다 띄우는 스크립트라도 줘야 하나요?" Docker..
서론DevOps 엔지니어로 일하다 보면 도커(Docker)는 매일 사용하는 필수 도구다.컨테이너를 활용하면 애플리케이션을 빠르게 배포하고, 개발과 운영 환경을 동일하게 맞출 수 있어서 협업이 훨씬 수월해진다. ‘시작하세요! 도커/쿠버네티스’ 책을 읽으면서 도커에 대해 다시 한 번 정리하고 싶은 내용들을 이렇게 기록하고자 한다.도커 엔진도커 엔진에서 가장 핵심이 되는 구성 요소는 이미지(Image)와 컨테이너(Container)다.이미지는 여러 계층(layer)으로 구성된 읽기 전용 파일이다. 애플리케이션 실행에 필요한 모든 파일과 설정이 포함되어 있다.컨테이너는 이 이미지를 실행한 결과물로, 독립된 프로세스 공간에서 동작하는 일종의 가상 환경이다.컨테이너를 실행하면 도커는 해당 이미지 기반으로 컨테이너 ..
서론헤드 퍼스트 디자인 패턴 절반을 읽으면서 전체적인 패턴에 대해 실제 예시(결제 시스템)를 들어 정리를 했었다.링크 : https://jmcunst.tistory.com/357 헤드 퍼스트 디자인 패턴 정리 -상- ( 결제 시스템 )서론이번에 헤드 퍼스트 디자인 패턴이라는 책을 절반 정도 읽은 시점에서 한 번 정리를 해보고자 한다. 이 책은 꾀 유명한 책으로, 객체지향 설계를 고민하는 개발자에게 매우 도움이 되는 책jmcunst.tistory.com이번 글에서는 그중에서도 커맨드(Command) 패턴에 대해서 깊게 알아보려고 한다.커맨드 패턴이란커맨드를 직역하면 ‘명령’이다. 왜 커맨드 패턴으로 명명하였을까에 대해 고민해볼 필요가 있다. 우리는 코드에서 특정 동작을 실행할 때 메서드를 직접 호출하는 방..