Dandy Now!
  • 게시글 대표 이미지 썸네일 주소
    [ CS/SW공학 ]
    [SW공학] 원앱 전략과 MSA: 하나의 경험, 다양한 아키텍처
    2025-04-21 15:16:34
    원앱 전략과 MSA: 하나의 경험, 다양한 아키텍처최근 소프트웨어 개발 분야에서 원앱 전략과 MSA(Microservices Architecture)는 중요한 화두이다. 겉보기에는 상반되는 개념처럼 보일 수 있지만, 실제로는 애플리케이션의 성장과 발전에 따라 유기적으로 연결될 수 있는 주제이다. 이번 글에서는 원앱 전략과 MSA의 개념을 살펴보고, 이 둘의 관련성에 대해 논의하고자 한다. 1. 원앱 전략: 통합된 사용자 경험원앱 전략은 하나의 통합된 애플리케이션을 통해 모든 기능과 서비스를 제공하는 방식을 의미한다. 사용자는 별도의 앱을 설치하거나 여러 웹사이트를 방문할 필요 없이, 단 하나의 앱 내에서 원하는 모든 작업을 수행할 수 있다. 초기 단계의 비교적 단순한 애플리케이션 개발에 효율적이며, 사..
  • [ CS/SW공학 ]
    [SW공학] 웹 개발 시간대(Timezone) 완벽 정복: UTC 기준 설계와 흔한 실수
    2025-04-17 17:54:28
    웹 개발 시간대(Timezone) 완벽 정복: UTC 기준 설계와 흔한 함정들웹 애플리케이션 개발에서 시간대(Timezone) 처리는 흔히 어려움을 겪는 부분이다. "내 PC에서는 잘 나왔는데 서버 시간은 왜 다르지?", "오후 2시 데이터를 넣었는데 API 결과는 왜 이럴까?"와 같은 문제는 많은 개발자가 마주하는 현실이다. 특히 데이터베이스, 백엔드 서버, 프론트엔드 클라이언트 등 여러 컴포넌트가 얽힌 분산 환경에서는 명확한 시간대 전략 없이는 혼란과 버그가 발생하기 쉽다.이 글의 목적은 이러한 시간대 문제를 예방하고, 안정적이고 예측 가능한 시스템을 구축하기 위한 모범 사례, 특히 UTC(협정 세계시)를 표준으로 사용하는 전략을 상세히 설명하는 것이다.1. 시간대는 왜 이리 까다로운가?지리적 다양성..
  • 게시글 대표 이미지 썸네일 주소
    [ CS/SW공학 ]
    [SW공학] 학교 예제로 보는 절차지향과 객체지향, 뭐가 다를까?
    2025-04-13 22:00:04
    학교 예제로 보는 절차지향과 객체지향, 뭐가 다를까?소프트웨어 개발 세계에는 크게 두 가지 중요한 프로그래밍 방식이 있다. 바로 절차지향 프로그래밍(Procedural Programming, PP)과 객체지향 프로그래밍(Object-Oriented Programming, OOP)이다. 이 둘은 마치 세상을 바라보는 다른 두 개의 렌즈처럼, 프로그램을 만들고 문제를 해결하는 방식에서 근본적인 차이를 보인다.절차지향은 '어떤 순서로 일을 처리할까?'에 집중하는 반면, 객체지향은 현실 세계처럼 데이터와 관련 기능을 하나로 묶은 '객체'들이 서로 소통하며 프로그램을 만들어나간다.이 글에서는 이 두 가지 프로그래밍 방식의 핵심 개념을 알아보고, 우리에게 친숙한 '학교 운영'을 예시로 들어 그 차이점을 쉽고 명확하..
  • [ CS/네트워크 ]
    [네트워크] 네트워크 안정성을 위한 기술
    2025-04-01 11:22:41
    네트워크 안정성을 위한 기술1. 가용성 (Availability)시스템 또는 서비스가 정상적으로 운영되어 사용 가능한 정도를 나타내는 지표.높은 가용성은 시스템 장애로 인한 서비스 중단 시간을 최소화하는 것을 의미.2. 고가용성 (High Availability, HA)시스템 장애 발생 시에도 서비스 중단을 최소화하거나 없이 지속적으로 운영될 수 있도록 설계된 시스템.이중화, 결함 감내 등의 기술을 활용하여 구현.3. 결함 감내 (Fault Tolerance)시스템 내부에 결함이 발생하더라도 전체 시스템의 기능을 정상적으로 유지할 수 있는 능력.오류 검출 및 복구 메커니즘을 통해 구현.4. 이중화 (Redundancy)시스템의 구성 요소 (하드웨어, 소프트웨어, 네트워크 등)를 하나 더 준비하여 장애 발..
  • [ CS/컴퓨터구조와 운영체제 ]
    [운영체제] 동기화 기법 : 모니터, 인터페이스, 그리고 조건 변수
    2025-04-01 10:40:35
    모니터, 인터페이스, 그리고 조건 변수1. 모니터 (Monitor)모니터는 공유 자원(데이터)과 이 자원에 접근하는 프로시저(메서드)들을 하나로 묶고, 자동적으로 상호 배제(Mutual Exclusion) 기능을 제공하는 고급 동기화 추상화 구조다. 프로그래머가 락(lock) 관리를 명시적으로 하지 않아도 안전하게 공유 자원을 다룰 수 있도록 돕는다.목적: 복잡한 동기화 문제를 단순화하고, 락/세마포 등을 직접 사용할 때 발생하기 쉬운 오류(예: 데드락, 잘못된 락 순서)를 줄임.주요 특징:상호 배제 (Mutual Exclusion): 모니터 내부에 정의된 프로시저(메서드)는 한 번에 오직 하나의 스레드만 실행할 수 있음. 즉, 모니터 자체가 암묵적인 락을 관리.캡슐화 (Encapsulation): 모니..
  • [ CS/컴퓨터구조와 운영체제 ]
    [운영체제] 동기화 기법 : 세마포, wait/signal 함수, 그리고 대기 큐
    2025-04-01 10:25:28
    세마포, wait/signal 함수, 그리고 대기 큐1. 세마포 (Semaphore) 란?세마포는 공유 자원에 대한 접근을 제어하거나, 프로세스/스레드 간의 실행 순서를 동기화하기 위해 사용되는 정수 변수이다. 뮤텍스가 오직 하나의 스레드만 접근을 허용하는 것(상호 배제)에 초점을 맞춘다면, 세마포는 '사용 가능한 자원의 개수'를 관리하는 데 주로 사용된다.핵심 구성: 정수 값 (사용 가능한 자원의 수를 나타냄)과 두 가지 원자적 연산(wait, signal).종류:카운팅 세마포 (Counting Semaphore): 임의의 정수 값을 가질 수 있으며, 여러 개의 동일한 자원에 대한 접근을 제어할 때 유용함 (예: 사용 가능한 프린터 3대).바이너리 세마포 (Binary Semaphore): 0 또는 1..
  • [ CS/컴퓨터구조와 운영체제 ]
    [운영체제] 동기화 기법 : 뮤텍스 락, acquire/release 함수, 그리고 바쁜 대기
    2025-04-01 10:11:07
    1. 뮤텍스 락, acquire/release 함수, 그리고 바쁜 대기1-1. 뮤텍스 락 (Mutex Lock) 이란?뮤텍스(Mutex, Mutual Exclusion) 락은 여러 스레드가 동시에 공유 자원에 접근하는 것을 막기 위한 동기화 기법이다. 임계 구역(Critical Section)이라고 불리는 코드 영역을 한 번에 하나의 스레드만 실행하도록 보장하여 데이터의 일관성을 지킨다.상호 배제: 뮤텍스의 가장 핵심적인 기능. 하나의 스레드가 특정 자원이나 코드 영역에 접근하면, 다른 스레드는 해당 스레드가 락을 해제할 때까지 기다려야 함.공유 자원 보호: 여러 스레드가 동시에 접근하여 값을 변경할 때 발생할 수 있는 경쟁 상태(Race Condition)를 방지.동기화: 스레드들의 실행 순서를 제어하..
  • [ CS/DBMS ]
    [Sequelize] Sequelize timestamps의 updatedAt 업데이트, 왜 안될까?
    2025-03-26 19:20:12
    Sequelize timestamps의 updatedAt 업데이트, 왜 안될까?Node.js에서 Sequelize를 사용할 때 timestamps: true 옵션은 createdAt과 updatedAt 컬럼을 자동으로 관리해주는 편리한 기능이다. 하지만, 때로는 예상치 못한 동작으로 인해 updatedAt이 업데이트되지 않는 상황을 마주할 수 있다. 특히, 레코드에 변경된 컬럼이 없을 경우 이러한 문제가 발생한다.1. 문제 상황다음과 같은 간단한 모델을 예시로 들어보겠다.const Sequelize = require("sequelize");module.exports = function (sequelize, DataTypes) { return sequelize.define( "Student", ..