
블루 / 그린 배포 Blue-Green 배포는 애플리케이션 또는 마이크로서비스의 이전 버전에 있던 사용자 트래픽을 이전 버전과 거의 동일한 새 버전으로 점진적으로 이전하는 애플리케이션 릴리스 모델이다. 마틴 파울러가 설명한 블루/그린 배포의 필요성 배포를 자동화할 때 겪는 어려움 중 하나는 소프트웨어를 최종 테스트 단계에서 실제 프로덕션 단계로 전환하는 컷오버 자체입니다. 일반적으로 다운 타임을 최소화하려면 이 작업을 신속하게 수행해야 합니다. 블루/그린 배포는 가능한 동일한 두 가지 프로덕션 환경을 확보함으로써 실현시킬 수 있습니다. 컷오버(cutover) : 기존에 운영되던 환경을 중단시키고, 새로 구축된 환경으로 오픈하는 것 다운타임(Downtime) : 시스템을 이용할 수 없는 시간 블루 / 그린..

배포 자동화 배포 자동화란 한 번의 클릭 혹은 명령어 입력을 통해 전체 배포 과정을 자동으로 진행하는 것을 뜻한다. 배포 자동화의 역할 수동적이고 반복적인 배포 과정을 자동화함으로써 시간이 절약된다. 전체 배포 과정을 매번 일관되게 진행하는 구조를 설계하여 휴먼 에러(Human Error)를 방지할 수 있다. 휴먼 에러란 사람이 수동적으로 배포 과정을 진행하는 중에 생기는 실수를 뜻한다. 이전의 배포과정과 비교해 특정 과정을 생략하거나 다르게 진행하여 오류가 발생하는 것이 휴먼 에러의 예로 볼 수 있다. 배포 자동화 파이프라인 배포에서 파이프라인이란 용어는 소스 코드의 관리부터 실제 서비스로의 배포 과정을 연결하는 구조를 뜻한다. 파이프라인은 전체 배포 과정을 여러 단계(Stages)로 분리한다. 각 단..

CI/CD CI (Continuous Integration) CI는 개발자를 위한 자동화 프로세스인 지속적인 통합(Continuous Integration)을 의미한다. CI를 구현하면 애플리케이션에 대한 코드 변경 사항이 정기적으로 빌드 및 테스트되어 레포지토리에 통합된다. 여러명의 개발자들이 최대한 작은 단위로 애플리케이션의 기능을 개발하며 merge를 하면, 애플리케이션들의 빌드, 테스트, 병합하는 과정을 주기적으로 자동화시켜야 한다. 이런 과정을 CI라고 하며, 이를 성공적으로 구현할 시 병합 시의 충돌을 예방할 수 있고, 코드의 결함 및 문제점을 빠르게 발견하고 해결할 수 있다. 이는 결과적으로 코드의 품질을 향상시킬 수 있다. CD(Continuous Delivery / Deployment) ..

구조화된 데이터를 표현하는 방식 XML, JSON, YAML 은 모두 데이터를 표현하는 방식이다. 각각 형태와 문법이 조금씩 다르고 쓰임새가 다르기 때문에 어느 하나만을 써야 한다고는 할 수 없고, 상황에 따라 맞는 것을 쓰면 된다. 그렇기 때문에 각각의 문법과 차이점을 알아두는 것이 좋다. 1. XML XML은 데이터를 표현하기 위해 많이 사용되어 온 방식으로, HTML과 흡사한 구조를 가지고 있다. HTML처럼 태그를 꺽쇠()를 이용하여 명시하고, 형태로 주석 사용이 가능하다. XML이 가지는 고유한 문법으로 소프트웨어 및 하드웨어에 대하여 독립적으로 데이터 처리가 가능하다. 트리 계층 구조를 가지고 있고, 루트 요소부터 시작해 여러 개의 자식을 계층적으로 포함하게 된다. 105 0.4g 27g 62..

낮은 검색 성능 - 인덱싱 인덱싱은 낮은 검색 성능 문제를 해결하기 위한 방법입니다. 효율적인 검색을 위한 시도 데이터베이스의 핵심적인 기능을 말하자면 다음 두 가지를 이야기할 수 있습니다. 첫 번째는 데이터를 저장하는 것이고, 두 번째는 요청에 왔을 때 저장되어 있는 데이터 중에 요청에 맞는 데이터를 찾아서 제공하는 것입니다. 데이터베이스 기능의 두 번째 경우에서, 낮은 검색 성능이 나타날 때, 좀 더 효율적인 방법으로 특정 키의 값을 확인하고 제공하기 위해서 인덱스(색인)를 이용합니다. 인덱스를 사용하지 않는다면 요청받은 데이터를 찾기 위해 전체 데이터베이스를 스캔해야 할 수도 있기 때문입니다. 데이터 검색에 도움을 주기 위한 메타데이터 인덱스는 데이터베이스에 저장된 기본데이터(primary data..

데이터베이스(Database, DB)란? 여러 사람이 공유할 목적으로 체계화해 통합, 관리하는 데이터의 집합. 스프레드 시트와 기능은 거의 유사하지만 컴퓨터 언어로 제어가 가능하며 앱이나 웹을 통해 공유가 가능하여 전세계 누구나 데이터베이스에 접근하고 편집이 가능하다는 장점이 있음. 데이터베이스의 특징 실시간 접근성(Real-Time Accessibility): 실시간 처리에 의한 응답이 가능해야 한다. 계속적인 변화(Continuous Evolution): 새로운 데이터의 삽입(Insert), 삭제(Delete), 갱신(Update)로 항상 최신의 데이터를 유지한다. 동시 공용(Concurrent Sharing): 다수의 사용자가 동시에 같은 내용의 데이터를 이용할 수 있어야 한다. 내용에 의한 참조(..

CORS CORS는 악의적인 사이트로부터의 공격을 방지하는데에 사용된다. 공격의 예시 중 하나로 CSRF 공격이 있다. 이는 Cross-Site Request Forgery 의 약자인데 일단 무슨 말인지는 차치하도록 하고 공격 예시를 통해 보도록 하자. 예를 들어, www.good-bank.com 이라는 은행 사이트가 있다고 했을 때, 사용자는 해당 사이트를 통해서 자신의 은행 잔고 정보를 서버에 요청해 확인한다. 그런데 만약 www.good-bank.com 와 똑같이 생긴 www.bad-bank.com 이라는 사이트가 있다고 하면, 이 사이트는 마치 자신이 good-bank 사이트 인양 속여서 bank api 서버에 정보를 요청한 뒤 값을 얻어올 수 있지 않을까? 이를 방지할 수 있는 정책으로 CORS..

서버(Server)? 서버는 기본적으로 어떤 컴퓨터의 역할을 의미한다. 서버는 크게 하드웨어와 소프트웨어 2가지 측면에서 살펴볼 수 있다. 하드웨어 정적 파일들이 제공되거나, 서버 애플리케이션이 실행되는 컴퓨터를 의미한다. 소프트웨어 정적 파일을 제공하거나, 서비스를 제공하는 애플리케이션 그 자체를 의미한다. 서버의 종류 각 서버는 특정 작업을 전문적으로 수행할 수 있게 여러 분류로 나누어진다. 1. 웹 서버(Web Server) 웹 서버는 클라이언트로부터 HTTP 요청을 받아들이고, HTML 문서와 같은 웹 페이지를 있는 그대로 반환하는 서버이다. 이 때 웹 페이지는 그림, CSS, JS을 포함하며, 이러한 파일들을 정적 파일이라고 부른다. 이러한 정적 파일들을 브라우저에 그대로 전달하는 역할을 하기 ..