knowledge

마이크로서비스가 무엇인지 살펴보고, 마이크로서비스의 장단점을 알아보자.모놀리식 아키텍처마이크로서비스 아키텍처를 이해하기 위해, 기존 엔터프라이즈 애플리케이션이 갖고 있던 모놀리식 아키텍처와 비교해보자.모놀리식 아키텍처모든 업무 로직을 하나의 분리된 형태로 묶어서 서비스하는 형태쇼핑몰을 개발한다고 가정을 했을 때, 사용자와 관련된 기능, 주문, 배송, 결제, 제품 등등다양한 기능들을 하나의 패키지로 묶어서 서비스하는 형태가 모놀리식 아키텍처를 갖는 애플리케이션이다. 모놀리식 아키텍처는 장점도 있지만, 서비스가 커질 경우 규모가 커질수록 특정 기능을 변경하는 데 시간이 오래 걸릴 수밖에 없다. 즉, 전체 서비스가 하나의 패키지로 구성되기 때문에 특정 기능 하나를 수정하고자 해도 다른 서비스들도 영향을 받는 ..
지난글트랜잭션 개념과 ACIDscheduleTransaction들이 동시에 실행될 때 발생 가능한 이상 현상Dirty read두 트랜잭션이 있다고 생각해보자.tx1은 데이터A를 읽기 작업을 하고 데이터A를 이용해 쓰기 작업을 한다.tx2는 해당 데이터A 쓰기 작업을 한다.두 트랜잭션은 아래와 같은 순서대로 진행될 수 있다.tx1이 실행tx2가 실행된 후 tx1이 데이터A를 읽기전에 tx2가 쓰기 작업을 수행tx1이 tx2가 쓰기 작업을 한 데이터A를 읽음tx1이 읽은 데이터 A를 이용해 쓰기 작업을 수행tx1이 커밋tx2가 문제가 생겨 롤백이 상황에서 tx1은 tx2가 롤백이 되면서 유효하지 않은 데이터를 사용해서 작업을 했음에도 불구하고 커밋을 이미 해버려서 롤백을 하지 못하게 된다.📌 Dirty r..
지난글: 트랜잭션 개념과 ACIDSchedule아래의 두가지 트랜잭션이 있다고 생각해보자.K가 H에게 이체를 하는 트랜잭션 1H가 본인의 계좌에 입금하는 트랜잭션 2 두 트랜잭션이 있을 때 여러 형태의 실행이 가능할 수 있다. 먼저 각 트랜잭션의 operation 순서를 정의하면 아래와 같다. 트랜잭션 1read(K_balance) -> r1(K)write(K_balance) -> w1(K)read(H_balance) -> r1(H)write(H_balance) -> w1(H)commit -> c1 트랜잭션 2read(H_balance) -> r2(H)write(H_balance) -> w2(H)commit -> c2 두 트랜잭션이 동시에 실행하면 어떤식으로 실행될지에 대한 케이스 4개를 간소화해서 정리..
J가 H에게 20만원을 이체할 때, 계좌 변동은 J의 계좌에서 20만원이 제거되고, H의 계좌에 20만원이 추가되어 최종적으로 J는 80만원, H는 220만원이 된다. SQL문으로 아래처럼 표현할 수 있다.UPDATE account SET balance - balance - 200000 WHERE id = 'j';UPDATE account SET balance - balance + 200000 WHERE id = 'H';두 SQL은 모두 성공해야 이체라는 작업이 정상적으로 성공했다고 볼 수 있다. 즉 둘 다 정상 처리되어야만 성공하는 단일 작업으로 볼 수 있다.이렇게 SQL 문이 모두 성공해야만 작업이 의미가 있는 작업을 데이터베이스에서 트랜잭션이라고 부른다. 트랜잭션- 단일한 논리적인 작업 단위를 의미..
시나리오 작성하기config: target: 'http://localhost:8080' phases: - duration: 30 arrivalRate: 3 name: Warm up - duration: 30 arrivalRate: 3 rampTo: 30 name: Ramp up load - duration: 60 arrivalRate: 30 name: Sustained load - duration: 30 arrivalRate: 30 rampTo: 10 name: End of loadscenarios: - name: "login and use some functions" flow: ..
설치Artilery 공식 홈페이지 바로가기 Artillery · Cloud-scale Load TestingKeep production reliable, customers happy, and pagers silent.www.artillery.ioArtillery를 설치하려면 공식 홈페이지에 접속하면 된다.INSTALL ARTILLERY CLI에 접속하자. System requirementsArtillery는 Node.js로 개발된 성능 테스트 툴이기 때문에 Node.js가 먼저 설치 되어 있어야 한다. artillery 설치Node.js를 설치 후 install -g artillery@1.7.6 명령어를 실행해주었다.C:\Users\qkrwl>npm install -g artillery@1.7.6npm ..
몇 가지의 운영체제, 서버의 자원, 네트워크, 데이터 베이스 등 필요한 지식에 대해 알아보자. 성능 테스트는 어떤 상황에서 왜 하는가?서버의 숫자서비스를 개발하고 서버에 배포한 후 많은 서비스를 운영하면서 많은 사용자가 동시에 접속하면 서버 자원을 많이 사용하게 된다. 서버 자원은 무한하지 않기 때문에 많은 사용자를 처리하려면 여러 대의 서버가 필요하다. 하지만, 서버를 무한정 늘릴 수는 없으므로(비용) 적절한 서버 수를 결정하는 것이 중요하다. 사용자가 발생시키는 트래픽을 감당하기 위해서는 얼마나 많은 서버가 있어야 할까? 이를 위해 성능 테스트 도구를 사용해 사용자가 많아졌을 때를 시뮬레이션할 수 있다. 성능 테스트 툴은 사용자의 요청을 생성하여 서버의 성능을 테스트하고, 그 결과를 리포트해 준다. ..
프로그래밍에서 나오는 개념인 동기식과 비동기식에 대해서 알아보자. 동기식(Synchronous) 작업이 순차적으로 실행되는 것이다. 한 작업이 완료되기 전에 다음 작업이 실행되지 않는다. 요청에 대한 응답을 기다리고 응답이 오면 다음 요청을 수행하는 방식이다. 장점 단순: 구성이 단순하다. 순서 조작이 가능하다. ( 요청과 응답의 순서가 보장이 된다.) 요청에 대한 응답 값을 보장 받을 수 있다. 단점 멀티 태스킹: 여러일을 동시에 실행이 불가능하다 대기 시간이 걸려 시간이 오래 걸릴 수 있다. Synchronous: 동기식 '모두 동시에 똑같이 진행되는' 의미를 담고있다. 여기서 동시에 똑같이 진행된다는 것은 Request를 보내면 그 자리에서 Response를 받는다는 말이다. = 두 서버 사이의 T..
임베디드 시스템(Embedded Systems)과 범용 시스템(General Purpose Systems)은 컴퓨터 시스템의 두 가지 주요 범주다. 각각의 특징과 용도에 대해 간단히 알아보고자 한다. 임베디드 시스템 (Embedded Systems) 임베디드 시스템은 일반적으로 특정한 작업이나 기능을 수행하기 위해 설계된 컴퓨터 시스템이다. 주로 하드웨어와 소프트웨어가 밀접하게 통합되어 있으며, 특정한 환경 또는 장치에 내장되어 작동한다. 예시: 자동차의 엔진 제어 장치, 의료 장비, 가전 제품, 산업용 제어 시스템 특징 제한된 리소스: 임베디드 시스템은 종종 처리 속도, 메모리, 전력 등의 제한된 하드웨어 리소스를 갖고 있다. 실시간 작업: 실시간 성능이 중요한 경우가 많으며, 정확한 시간 제약 내에서..
프록시 서버 프록시 서버는 클라이언트와 서버 사이에서 중계 역할을 수행하는 서버다. 클라이언트가 서버에 직접 연결하는 대신, 프록시 서버를 통해 요청을 보내고 응답을 받는다. 이를 통해 여러 가지 이점이 있다 보안: 프록시 서버는 클라이언트의 IP 주소를 숨기고, 서버에 대한 직접적인 접근을 막아 보안을 강화할 수 있다. 또한 프록시 서버는 보안 정책을 적용하여 악의적인 트래픽을 필터링하거나 차단할 수 있다. 캐싱: 프록시 서버는 요청된 리소스의 사본을 저장하여, 이후 동일한 요청이 발생할 때 서버에 다시 요청하지 않고 캐시된 데이터를 제공함으로써 성능을 향상시킨다. 이는 네트워크 대역폭을 절약하고 웹 페이지 로딩 시간을 단축할 수 있다. 로드 밸런싱: 프록시 서버는 여러 서버 간의 트래픽을 분산시켜 서..
je-pa
'knowledge' 카테고리의 글 목록