본문 바로가기

전체 글

(264)
CPU 아키텍처 종류 CPU 설계의 두 종류, RISC와 CISC컴퓨터의 두뇌인 CPU를 설계할 때, "명령어를 어떻게 구성할 것인가?"는 성능과 효율을 결정하는 가장 근본적인 질문입니다. 오늘은 현대 컴퓨팅의 뿌리를 이루는 두 가지 아키텍처, CISC와 RISC에 대해 자세히 알아보겠습니다.1. 명령어 집합 아키텍처(ISA)란?CPU 아키텍처를 이해하려면 먼저 ISA(Instruction Set Architecture)를 알아야 합니다. ISA는 하드웨어(CPU)와 소프트웨어 사이의 '약속'입니다. 소프트웨어가 "이런 일을 해줘"라고 명령을 내릴 때, CPU가 알아 들을 수 있는 명령어들의 목록이죠. 이 목록을 어떻게 만드느냐에 따라 CISC와 RISC로 나뉩니다.2. CISC(Complex Instruction Set C..
[Docker] 도커 기본 개념 및 용어 what is docker도커란도커는 컨테이너의 생명주기를 쉽게 관리할 수 있는 플랫폼을 제공한다.도커는 컨테이너라고 불리는 느슨하게 격리된 환경에서 애플리케이션을 패키징하고 실행할 수 있는 기술을 쉽게 사용할 수 있도록 만들어진 플랫폼이다.컨테이너란컨테이너는 애플리케이션 코드와 이를 실행하는데 필요한 특정 버전의 런타임과 라이브러리 같은 종속 환경을 함께 묶어 일관되고 격리된 환경에서 실행할 수 있도록 만든 패키지입니다.VM과 컨테이너 차이우선 가상화(virtualization)는 하드웨어 리소스를 추상적으로 표현하여 사용하는 것을 말한다. 예를 들어, 가상 메모리라고 하면, 메모리라는 하드웨어 리소스를 추상적으로 표현하여 사용한다. 즉, 실제 메모리(물리 메모리)를 추상화하여 새로운 계층인 가상 메모..
[Architecture] REST란 무엇일까 What is RESTREST 란?REST는 프로토콜이나 표준이 아닌 하나의 아키텍처 스타일이다.아키텍처 스타일이란 "시스템을 구성하는 컴포넌트들의 상호작용하는 방식에 대한 제약조건들의 집합"이다. REST는 제약조건들을 분산 하이퍼미디어 시스템(Distributed Hypermedia System), 즉 웹(WWW) 환경에 맞게 정리한 것이다. 따라서 REST는 웹의 구조와 철학을 이론적으로 체계화한 아키텍처 스타일이라고 할 수 있다.REST 아키텍처 스타일을 준수하는 웹 API를 REST API(혹은 RESTful API)라고 한다.REST의 6가지 기본 제약조건(원칙)REST는 설계에서 확장성, 무상태성, 단순성(simplicity)을 촉진하는 6가지 제약조건이 있다.1. Uniform Interf..
[AWS] 인스턴스 연결성 검사 실패 - OOM 에러 해결 (with swap memory) 개요현재 AWS EC2에서 Spring Boot 서버를 운영하고 있는데, SSH으로 접근하려고 보니 접근이 안되었다. 그래서 AWS 콘솔에서 EC2 인스턴스의 상태를 확인해 보니, 상태 검사 항목 중 1개가 실패하며 “인스턴스 연결성 검사 실패”라는 메시지가 표시되었다. 이후 시스템 로그를 살펴보니 아래와 같은 로그가 확인되었다.[ 18.144369] cloud-init[1106]: Cloud-init v. 25.1.4-0ubuntu0~24.04.1 finished at Thu, 09 Oct 2025 11:02:20 +0000. Datasource DataSourceEc2Local. Up 18.13 seconds [1073487.185183] Out of memory: Killed process 4616..
[Python] GIL(Global Interpreter Lock) GIL (Global Interpreter Lock, 전역 인터프리터 락)GIL 이란GIL은 CPython 인터프리터의 제어권을 단 하나의 스레드만 가질 수 있도록 보장하는 일종의 뮤텍스(mutex)이다. 즉, 어느 시점에서든 단 하나의 스레드만 실행 상태에 있을 수 있다.파이썬 인터프리터는 파이썬 소스 코드를 읽어 바이트코드로 변환하고 이를 실행하는 역할을 한다. 동시에 메모리 관리(객체 생성·삭제, GC), 스레드 관리, 예외 처리등 프로그램 실행 환경 전반을 책임진다.실행 상태: CPU를 실제로 점유해서 명령어를 수행 중인 상태 GIL은 CPython 구현체에만 존재하는 특징이다. 그리고 GIL은 두 개 이상의 CPU 코어가 있는 멀티스레드(하드웨어 스레드) 아키텍처에서도 한 번에 하나의 스레드만 ..
[Python] CPython 이란 CPythonCPython은 Python 프로그래밍 언어의 공식 구현체(Python 런타임)이다. Python은 언어 사양(specification)이고, 이를 실제로 실행 가능한 형태로 만든 "구현체(implementation)"가 여러개 있는데 CPython이 가장 널리 쓰이고 공식 표준으로 간주되는 구현체이다. CPython 외에도 PyPy, Cython, Jython 등 다른 구현체가 있으며 python.org에서 Python 배포판을 설치하면 CPython이 실행된다. CPython은 "공식 구현체"이기 때문에 다른 파이썬 구현체가 따라야 하는 언어 명세(language specification)까지 포함하고 있다. 그리고 이 Python 언어 명세는 Python 언어에 대한 설명을 담은 문서이..
[Infra] Github Actions 으로 CI/CD 구축하기 (with Docker) 현재 진행하고 있는 프로젝트의 V1이라고 할 수 있는 버전을 배포했다. 앞으로는 실제 사용자 피드백을 반영하며 서비스를 점진적으로 고도화할 계획이다. 그런데 새로운 기능을 개발할 때마다 코드를 수정하고, 변경된 내용을 매번 직접 서버에 배포한다면 과정이 번거로울 것이다. 이러한 문제를 해결하기 위해 CI/CD 파이프라인을 구축하기로 했다.CI/CD 란CI/CD란 수동 단계를 소프트웨어 빌드, 테스트, 배포하는 파이프라인으로 대체하는 자동화된 워크플로우이다. CI(Continuous Integration: 지속적인 통합)는 코드 변경 사항을 자동 빌드와 테스트를 통해 자주 검증하여 오류와 보안 문제를 개발 초기 단계에서 조기에 발견하고 해결할 수 있도록 돕는다. 이를 통해 개발 속도를 높이고 코드 품질을 ..
[Safetrip] 데이터 파이프라인 설계 (with OpenAI API) - 2 [3] 글 분류 (classification)분류와 추출 작업은 서비스 최초 배포 시점의 파이프라인을 기반으로 구현되었으므로, 이를 중심으로 기록하겠다.먼저 나름의 기준으로 여행 사기를 선별할 수 있는 기준을 아래와 같이 작성했다. 그리고 이것을 그대로 프롬프트에 작성했다.선별 기준1. 여행 사기 경험텍스트는 반드시 해외에서 작성자가 직접 겪은 실제 사기를 1인칭 시점(예: “나”, “우리”, “내 경험”)으로 명확히 서술해야 한다.예시: 소매치기/도난, 강압적 판매/호객, 바가지 요금 등제외: 개인적 사건이 없는 일반 조언이나 안전 팁, 서비스 불만이나 막연하고 일반적인 불평, 뉴스 기사·소문·전해들은 이야기, 농담·풍자·과장, 광고/홍보성 콘텐츠, 다른 사람의 경험(직접 경험이 아님).2. 공유 가치..