본문 바로가기

CS

(89)
AOP AOP(Aspect Oriented Programming) 소프트웨어에서 공통적인 관심사를 모듈화하고 분리하는 프로그래밍 방식. 개발을 하다 보면 특정 서비스나 도메인에 종속되지 않고, 여러 서비스에서 공통적으로 사용되는 기능이 존재한다. 예를 들어 트랜잭션, 로깅, API 사용자 권한 검증 같은 작업은 특정 서비스의 핵심 내용과 관련이 없으며, 프로그램 전역에서 공통적으로 사용된다. 이들은 핵심적인 서비스를 구현하기 위해 필요한 부수적인 기능을 수행한다. 이처럼 특정 모듈에 종속되는 대신 여러 모듈에서 공통적으로 사용될 수 있는 프로그램 상 특정 측면(Aspect)을 횡단 관심사(Cross-cutting concern)라고 부른다. 전통적인 객체지향 프로그래밍 방식에서는 서비스의 핵심과 횡단 관심사가 ..
객체 지향 프로그래밍의 배경 도입 현재 널리 사용되는 프로그래밍 패러다임에는 절차적 프로그래밍, 객체지향 프로그래밍, 함수형 프로그래밍이 있다. 이 중 가장 많이 사용되고, 중요하다고 생각하는 프로그래밍 패러다임을 하나 고른다면 대부분의 사람들은 객체지향 프로그래밍을 선택할 것이다. 많은 언어들이 클래스를 시작으로 상속, 인터페이스 등의 객체지향과 관련된 기능을 포함하고 있으며, 실제로 이를 이용하여 개발하는 경우가 많기 때문이다. 그렇다면, 객체지향 프로그래밍 방식은 왜 널리 사용되고, 중요한 패러다임으로 자리 잡았을까? 이번 글에서는 객체지향이 왜 등장한 배경을 다뤄보고자 한다. 소프트웨어의 복잡함 객체지향을 논하기에 앞서, 개발을 통해 달성하고자 하는 목표인 소프트웨어에 대해 생각해 보자. 세상에는 정말 다양한 요구사항이 있으..
[데이터베이스] 트랜잭션 https://en.wikipedia.org/wiki/Isolation_(database_systems) 트랜잭션 하나의 논리적 동작을 정상적으로 수행하는데 필요한 DB 연산들을 모아놓은 데이터베이스 시스템 작업의 기본 단위 ACID 원칙 트랜잭션이 가진 4가지 특성 특성 설명 달성 방법 Atomicity (원자성) 트랜잭션 구성 연산은 모두 실행되거나, 하나도 실행되지 않아야 한다. 장애로 인해 연산이 중단되면 트랜잭션 수행 이전으로 작업을 되돌릴 수 있어야 한다. All or Nothing Commit / Rollback Consistency (일관성) 트랜잭션 성공 전·후에 대한 일관성을 유지해야 한다 (완료 시점에 일관된 상태). ex) 계좌 이체 시 총 금액은 일치해야 함 무결성 제약조건 동시성..
[CS] DIP / IoC / DI Dependency Inversion Principle: 의존의 역전 원칙. SOLID 원칙 중 하나로, 구체적인 것이 추상화에 의존하는 것을 의미한다. 인터페이스에 의존하는 경우, 이를 구현한 클래스 상에 변동이 발생하더라도 구체적 객체와는 결합도가 낮아 변화가 전파되지 않는다. 추상에 의존 부분에 주목! Inversion of Control: 제어 수준을 역전한다는 의미로, 사용자가 객체의 생명 주기나 코드의 흐름을 직접 관리하는 대신 프레임워크에 제어권을 넘기는 패턴. 프레임워크에 정의된 생명 주기와 동작 방식에 따라 적합한 함수를 프레임워크 수준에서 실행한다. ex) Get / Post 데코레이터를 적용한 controller 메서드 제어 권한이 프로그래머가 아닌 프레임워크에게 있다는 점에 주목! ..
[CS] 객체 지향 객체지향(Object Oriented) 실세계의 개체를 속성과 메서드가 결합한 객체 형태로 나타내는 패러다임으로, 컴퓨터 프로그램을 단순히 명령 목록으로 보는 것에서 벗어나 여러 독립된 객체들의 모임 및 메시지 기반 상호작용으로 간주한다. 객체지향의 장점 재사용과 확장이 용이하다. 유지보수가 쉬운 편이다. 복잡한 구조를 단계적 / 계층적으로 표현한다. 현실세계를 모형화하여 이해하기 쉽다. 객체지향 구성요소 클래스 공통의 속성(프로퍼티) 및 연산(메서드)를 가지는 객체의 집합 속성(프로퍼티): 객체가 가진 데이터를 나타내는 속성들 메서드: 객체가 메시지를 받아 실행하는 구체적인 연산 실제 세상의 데이터를 추상화하는 단위(개 => Dog 클래스) 객체 물리적, 추상적으로 외부 요소와 식별되는 대상. 독립적인..
[DB] crow feet notation 엔티티 사이의 관계를 표현할 때 사용하는 방법에는 여러가지가 있을 수 있다. 여기에 대해서는 ER Model에 대해 설명하는 과정에서 예전에 내가 써둔 글이 있어서 첨부한다. https://blaxsior-repository.tistory.com/104 [데이터베이스 03] Entity Relationship Model 하나의 프로그램을 설계할 때는 어플리케이션 디자인 및 데이터베이스 디자인이 필요하다. 이때 수행되는 데이터베이스 디자인은 엄밀하게 따지면 분석(analysis) 및 디자인(design) 작업을 포함하 blaxsior-repository.tistory.com Chen notation / min-max notation 위 글에 기록한 내용에 따르면 우리는 최소 2개의 표기법을 알고 있다. c..
[batch] cron 표현식 https://ko.wikipedia.org/wiki/Cron cron - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. ko.wikipedia.org cron은 유닉스 계열 운영체제의 시간 기반 잡 스케줄러이다. 과거부터 시간 기반 스케줄링을 수행할 때 자주 사용한 유틸리티 프로그램으로, 일정 시간마다 정해진 동작을 수행해야 하는 배치 프로그램을 구현할 때 많이 사용한다. 이렇다 보니 많은 배치 스케줄러들이 cron을 직접 사용하지는 않더라도 일종의 표준처럼 해당 유틸의 시간 표현 방식을 동일하게 사용하는 경우가 많다. 크론 식은 다음 필드를 포함한다. 필드 값 초 0-59, 특문 분 0-59, 특문 시 0-59, 특문 일(day of month) 0~31, 특문 월(month) 1..
[네트워크] HOL(Head Of Line) blocking https://en.wikipedia.org/wiki/Head-of-line_blocking 정의 패킷 라인이 첫번째 패킷에 의해 대기열로 보류될 때 발생하는 성능 저하를 의미한다. 특정 프로토콜이나 기술에 국한된 개념이 아니며, 순서를 보장하는 서비스나 자원의 경합 등 특정 패킷의 대기가 다른 패킷의 움직임을 막는 경우 HOL blocking에 속할 수 있다. 네트워크 스위치 입력 큐에 속한 패킷들이 하나의 출력 큐를 두고 경합하는 과정에서 단 하나의 큐 데이터만 전송되고, 다른 큐의 데이터들은 그만큼 대기하는 비효율이 발생할 수 있다. 만약 경합이 없었다면 모든 첫번째 큐의 데이터가 적절한 출력 포트로 이동하므로 다음 패킷들은 각 큐의 첫번째 패킷에 의한 대기(차단) 없이 다음 턴에 처리될 수 있을 ..