목록전체 글 (75)
Arthur's Blog
CD CD는 지속적인 제공(Continuous Delivery) 또는 지속적인 배포(Continuous Deployment)를 의미하며 이 두 용어는 상호 교환적으로 사용된다. 두 가지 의미 모두 파이프라인의 추가 단계에 대한 자동화를 뜻한다. 지속적인 제공(Continuous Delivery) 지속적인 제공이란 개발자들이 애플리케이션에 적용한 변경 사항이 버그 테스트를 거쳐 리포지토리에 자동으로 업로드되는 것을 뜻하며, 운영팀은 이 리포지토리에서 애플리케이션을 실시간 프로덕션 환경으로 배포할 수 있다. 개발팀과 비즈니스팀 간의 가시성과 커뮤니케이션 부족 문제를 해결해 준다. 지속적인 제공은 최소한의 노력으로 새로운 코드를 배포하는 것을 목표로 한다. 지속적인 배포(Continuous Deployment..
트랜잭션이란 트랜잭션이란 질의(query)를 하나의 묶음 처리해서 만약 중간에 실행이 중단됐을 경우, 처음부터 다시 실행하는 Rollback을 수행하고, 오류없이 실행을 마치면 commit을 하는 실행 단위를 의미한다. 즉, 한 번 질의가 실행되면 질의가 모두 수행되거나 모두 수행되지 않는 작업수행의 논리적 단위이다. 트랜잭션을 작업수행의 논리적 단위라고 이야기를 했는데, 이로인해 DBMS의 성능은 초당 트랜잭션의 실행 수(TPS : Transaction per second)로 측정한다. 사용 이유 트랜잭션은 DB 서버에 여러 개의 클라이언트가 동시에 액세스 하거나 응용프로그램이 갱신을 처리하는 과정에서 중단 될 수 있는 경우 등 데이터 부정합을 방지하고자 할 때 사용합니다. 부정합이 발생하지 않으려면 ..
ACID란 ACID는 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질을 가리키는 약어디다. 트랜잭션에는 4가지의 특성이 있다. 원자성 (Atomicity) 트랜잭션의 작업이 부분적으로 실행되거나 중단되지 않는 것을 보장하는 것을 말한다. 즉, All oro Nothing의 개념으로써 작업 단위를 일부분만 실행하지 않는다는 것을 의미한다. 원자성 보장 트랜잭션에서 원자성은 수행하고 있는 트랜잭션에 의해 변경된 내역을 유지하면서, 이전에 commit된 상태를 임시 영역에 따로 저장함으로써 보장한다. 현재 수행하고 있는 트랜잭션에서 오류가 발생하면 현재 내역을 날려버리고 임시 영역에 저장했던 생태로 rollback한다. 이전 데이터들이 임시로 저장되는 영역을 롤백 세그먼트라고 하며, 현재 ..
Session은 In memory / File storage / Database storage에 저장을 하는데, 서비스를 확장하거나 한 플랫폼에 여러 서비스가 존재하는 경우 DB 또는 메모리를 공유하기 어렵다. 그에비해 JWT는 Client가 accessToken 또는 refreshToken을 소유하고 있는데, 한 플랫폼 내부에 여러 서비스가 존재하더라도 secretKey만 일치하다면 인증을 할 수 있다. 위의 이유들로 MSA와 같은 한 플랫폼 내부에 여러 서비스가 존재하는 경우 Session보다는 JWT를 애용한다.
GitFlow Vincent Driessen이 말한 branching model을 구현한 Git 확장 모듈이다. 기본 브랜치는 5가지를 이야기한다. feature > develop > release > hotfix > main 브랜치가 존재하며, 머지 순서는 앞에서 뒤로 진행된다. release 브랜치와 hotfix 브랜치의 경우, develop 브랜치의 오른쪽에 존재하기에 모두 develop 브랜치도 머지를 하도록 구성이 되어있다. Vincent Driesen은 관련하여 스크립트로 명령을 구성해놨으며, 그냥 설치를 하여 CLI에서 명령으로 작업을 하여도 되고, GUI 툴들에서 기본 내장 git-flow 명령이나 플러그인을 설치하여 작업을 진행할 수 있도록 보편화되어있는 브랜칭 모델이다. 구조와 흐름 가..
REST API 개요 REST 아키텍처의 제약 조건을 준수하는 애플리케이션 프로그래밍 인터페이스를 뜻한다. REST는 Representational State Transfer의 줄임말이다. API(Application Programming Interface)란 애플리케이션 소프트웨어를 구축하고 통합하는 정의 및 프로토콜 세트이다. 때때로 API는 정보 제공자와 정보 사용자 간의 계약으로 지칭되고, 소비자에게 필요한 콘텐츠(Request)와 생산자에게 필요한 콘텐츠(Response)를 구성한다. 컴퓨터나 시스템과 상호 작용하여 정보를 검색하거나 기능을 수행하고자 할 때 API는 사용자가 원하는 것을 시스템에 전달할 수 있게 지원하여 시스템이 이 요청을 이해하고 이행하도록 할 수 있다. API를 사용자 또는..
소프트웨어를 이용한 해결방법의 문제점 다중 스레드 또는 임계영역보다 복잡한 문제로 일반화하기가 쉽지 않음. 이를 위해 세마포어사용. 특히 원자적 연산에 대한 하드웨어 지원이 가능한 경우 효과적인 모니터사용. 세마포어 연산(P연산, V연산), 모니터 연산 3. 세마포어(Semaphores) 1. 세마포어 개요 세마포어 개요 동기화를 위한 도구 음이 아닌 정수값을 갖는 플래그 변수 다익스트라가 상호배제를 극복하기 위해 제안 세마포어의 유명한 예 : 열차 진행 여부를 알리는 차단기 세마포어 연산 세마포어 변수 1. 카운팅 세마포어 (Counting Semaphore) S의 크기 : 총 사용 가능한 자원의 갯수 S는 자원의 개수로 초기화 됨 S의 범위는 한정되어 있지 않음 2. 이진 세마포어 (Binary Se..
1. 상호배제와 동기화 상호배제(Mutual Exclusion) 특정 공유자원을 한 순간에 한 개의 프로세스만 사용할 수 있는 경우 프로세스 하나가 데이터에 접근하는 동안 다른 프로세스가 해당 데이터를 접근할 수 없게 하는 것 동기화(Synchronous) 공유자원을 동시에 사용하지 못하게 프로세스들이 상호 협력하면서 수행하는 것 순차적 재사용이 가능한 자원의 공유를 위해 질서 있는 실행을 보장하고 데이터 일관성 유지해줌 경쟁상태(Race Condition) - 여러 개의 서로 다른 프로세스가 동일한 자료에 접근, 자료를 조작하여 그 결과가 접근 순서에 따라 달라지는 상황 => 동기화 필요 => 임계영역을 이용한 상호배제로 구현 2. 프로세스 동기화 임계영역(critical section, CS) 개념 ..