분류 전체보기

    [클라우드 인프라와 API의 구조] 2. 클라우드 컴포넌트 종류

    클라우드를 구성하는 요소 1. 테넌트 각 클라우드 사용자는 자신만의 독립된 테넌트 환경을 갖게 됨. 멀티 테넌트를 구성하여, 여러 사용자가 자신만의 격리된 공간에서 같은 클라우드 환경을 사용. 2. 리전 지리적으로 멀리 떨어진 지역에 여러 개의 클라우드 인프라를 분산 운영할 수 있음. 각 리전들은 서로 독립된 환경이라 리전 별로 가상 네트워크를 구성할 순 있지만, 여러 리전에 걸친 가상 네트워크를 구성할 순 없음. cf) 보안 측면에서 재난 대응 시스템을 구성한다. BCP(Business Continuity Plan) 자연적, 인위적 재해와 장애로 부터 핵심 사업 프로세스의 연속성을 보장 예방적 개념 DRP(Disaster Recovery Plan) 재난이 닥친 직후의 파급 효과를 다루는 것 복구적 개념..

    [클라우드 인프라와 API의 구조] 1.클라우딩 컴퓨팅과 API의 역할

    클라우딩 컴퓨팅이란? 저자는 클라우딩 컴퓨팅의 진정한 본질은 물리적이고 기술적인 시스템 구조나 전산 장비들로만 만들어지는 것이 아니고, API에 있다고 봄. Public Cloud vs Private Cloud Private Cloud 특정 기업 내부에서만 사용하는 클라우드 환경 Public Cloud 여러 기업이 함께 사용할 수 있는 클라우드 환경 사용자마다 각자 격리된 공간에서 같은 클라우드 환경을 사용할 수 있음. 과연 어떻게 각 사용자마다 격리된 공간을 구성할 수 있을까? 클라우드 환경에서 멀티 테넌트 (multi-tenant)라는 기능을 제공해서 가능함. 멀티 테넌트 덕분에 보기에는 자신만 사용하는 클라우드로 보이지만, 실제로는 여러 (기업) 사용자가 서로 간섭 없이, 자신만의 격리된 공간에서 ..

    JVM이란? JVM의 구조 간단 정리

    JVM이란? JVM은 Java Virtual Machine으로, Java와 OS 사이에서 중간자 역할을 수행합니다. JVM은 자바 컴파일러(javac)에 의해 소스코드 (.java)로 부터 변환된 자바 바이트코드(. class)를 해당 OS에 맞게 해석해주는 역할을 수행합니다. 효과 이때, 자바 컴파일러에 의해 생성되는 자바 바이트 코드는 기계어가 아니라 OS에서 바로 해석할 수 없습니다. 기존의 C와 같은 언어는 소스를 컴파일하면 OS에서 바로 실행될 수 있는 실행파일 즉 기계어로 컴파일되는 반면, 왜 자바와 같은 JVM언어는 바로 기계어로 컴파일하지 않고, 중간에 바이트 코드로 변환하여 JVM이 바이트 코드를 실행하는 방식을 사용할까? 기존의 C와 같은 언어 방식은, 운영체제가 바뀔때 마다 그에 맞는..

    SOLID 원칙이란?

    SOLID 원칙의 목적은? 변경에 유연하다. 이해하기 쉽다. 많은 소프트웨어 시스템에 사용될 수 있는 컴포넌트의 기반이 된다. SRP: 단일 책임 원칙 (Single Responsibility Principle) 모든 클래스 혹은 메소드는 각각 하나의 책임만 가져야 한다.. 그러기 위해서는 각 클래스 혹은 메소드는 응집도는 높고, 결합도는 낮아야 한다. 이를 위해서 각 모듈을 변경 해야하는 이유는 오직 하나 뿐 이어야 한다. 만약, 클래스, 메소드를 변경하는 데 다른 여러가지 이유가 있다면 리팩토링 해보자. OCP: 개방-폐쇄 원칙 (Open-Closed Principle) 소프트웨어 개체는 확장에는 열려 있어야하고, 변경에는 닫혀 있어야 한다. 기능이 확장될 때, 기존의 코드를 변경하지 않으면서 기능을..

    DB Connection Pool이란? 주의사항

    시작에 앞서 한 가지 가정을 해보면 지금 한강에 왔는데 자전거를 타고 싶다... 그런데 잠깐 동안 자전거를 타기 위해 자전거를 사기에는 돈이 아깝지 않나요? 마찬가지입니다.... 현재 상황 설명 서버에서 클라이언트의 요청을 잠시 동안 들어주기 위해 DB Connection을 생성하는 것은 아깝지 않나요?? (잠시 자전거를 타기 위해 자전거를 직접 사기에는 돈이 아깝지 않나요?) 다시 말해서, 매번 클라이언트로부터 요청이 들어올 때마다 데이터베이스를 조작하기 위해 쿼리를 날리기 위해서는 Connection을 생성해서 데이터베이스에 쿼리를 날릴 필요가 있을까요? 개선 방법 그러지 말고 미리 여러 대의 자전거를 대여소에 준비해 두고, 사람들이 대여소에 가서 자전거를 대여해서 사용하면 비용이 덜 부담스럽습니다...