3 minute read

들어가며

어느덧 입사한지 6년이나 되었지만, 아무래도 CS를 전공하지 않았고 개발이나 프로젝트에 대한 경험이 적기 때문에 회의를 하다보면 생소한 용어들을 많이 접하게 되었다. 개발 용어는 그래도 어느정도 알아듣지만, 아무래도 백엔드나 프론트를 직접 다루진 않기 때문에 그 원리나 용어가 생소한 경우가 많다. 더욱이 사업개발팀이나 기획팀과 대화할 때는 더더욱 생소한 용어들이 많다.

이러한 이유로 업무를 진행하며 처음듣는 용어들을 정리하였다. 언제나 그렇듯 내가 직접 겪은 상황들 위주로 정리하였으니, 당연히 있어야될 용어들이 없을수도 있고, 이것도 모르나 싶을만한 용어들도 섞여있다. 비록 비루할지라도 누군가에게 도움이 되었으면 좋겠다.

시리즈는 목록은 다음과 같다:

  1. 실무에서 사용하는 IT 용어 정리 (개발편)
  2. 실무에서 사용하는 IT 용어 정리 (사업편)

클라우드

Tenant (테넌트)/ Multi tenant (멀티 테넌트)

Tenant(테넌트)는 SaaS 환경에서 자신의 자원이 아닌 서비스 제공자의 클라우드 자원을 빌려서 서비스를 이용하는 주체를 의미한다. 즉, 서비스 제공자의 클라우드 리소스를 사용하는 고객, 사용자를 의미한다. 각 테넌트는 자신의 데이터와 설정을 보유하며, 다른 테넌트의 데이터와 분리되어 있다.

멀티 테넌트(Multi-Tenant)는 하나의 소프트웨어 인스턴스가 여러 테넌트를 지원하는 구조를 의미한다. 여러 테넌트가 동일한 소프트웨어 인프라(애플리케이션 및 데이터베이스)를 공유하지만, 각 테넌트는 자신의 데이터와 환경을 독립적으로 사용할 수 있으며, 테넌트 간 데이터 격리와 보안을 유지하기 위해 데이터베이스 수준에서 격리하거나 논리적 분리를 구현한다.

Fig. 1: tenant

Figure: 싱글테넌시 VS 멀티테넌시 비교 (출처: 싱글테넌시 VS 멀티테넌시)

멀티 테넌트의 장점

  1. 운영 비용 절감
    • 한 인스턴스에서 여러 고객을 지원하므로 비용 효율성이 높다.
    • 서버, 네트워크, 스토리지 등의 물리적 리소스를 절약.
    • 소프트웨어 업데이트, 유지보수 비용 감소.
  2. 확장성
    • 새로운 고객(테넌트)을 추가할 때 별도의 소프트웨어 인스턴스를 생성할 필요가 없으므로, 새로운 사용자를 빠르게 온보딩 가능
    • 클라우드 리소스를 효율적으로 관리하여 수요 증가에 따라 확장 가능
  3. 유지보수의 용이성
    • 중앙 집중 관리: 소프트웨어의 유지보수, 업데이트, 보안 패치가 단일 인스턴스에서 이루어지기 때문에 모든 고객에게 동시에 적용 가능하며, 운영 복잡성을 크게 줄일 수 있음.
    • 자동화된 관리: 다수의 고객이 하나의 플랫폼에서 운영되므로, 관리 효율성이 높음
  4. 비즈니스 모델이 유연하여 다양한 규모의 고객을 지원
    • 작은 고객은 동일한 환경을 공유하며 비용을 절약.
    • 큰 고객은 개별 데이터와 사용자 설정을 유지하며 확장 가능.
    • 구독 기반 비즈니스 모델을 지원하기에 적합하며, 고객의 요구에 따라 서비스를 확장 또는 축소 가능

한계와 고려 사항

멀티 테넌트는 효율적이지만, 모든 상황에 적합한 것은 아니다.

  1. 고객별 커스터마이징 제한
    • 멀티 테넌트 환경에서는 모든 고객이 같은 소프트웨어 인스턴스를 공유하기 때문에 고도로 맞춤화된 요구사항을 처리하기 어려울 수 있음
  2. 보안 우려
    • 데이터 격리와 보안을 완벽히 유지해야 하므로 보안 관리가 중요
  3. 성능 이슈
    • 많은 테넌트가 자원을 공유할 경우, 특정 테넌트의 과도한 사용이 다른 테넌트에 영향을 미칠 수 있음
    • 이를 방지하기 위해 리소스 제한 정책(예: QoS)을 설정하는 등의 노력이 필요

출처: SaaS하면서 나도 모르게 헷갈렸던 Tenant 개념! 오늘 딱 정리해드립니다.

개발 방법론

스프린트 (sprint)

소프트웨어 개발 방법론 중 하나인 애자일(Agile) 방법론에서 사용되는 용어로, 프로젝트를 작은 주기로 분할하여 점진적으로 소프트웨어를 개발하는 방식을 애자일 방법론이라고 하는데, 여기서 이러한 작은 개발 주기를 스프린트라고 한다.

네트워크

IP

IP 주소는 인터넷 상의 장치들을 식별하기 위한 고유한 번호이다. IP 주소는 IPv4와 IPv6 두 가지 버전이 있다.

루프백 (loopback)

루프백 아이피 (loopback ip)란 IPv4 및 IPv6에서, 자기 자신을 가리키기 위한 목적으로 쓰기 위해 예약된 IP 주소이다. 말 그대로 현재 조작 중인 컴퓨터를 네트워크 연결 대상으로 인지하기 위해 설정된 IP 주소 구간으로, 이더넷 장치가 물리적으로 연결되지 않더라도 현재 사용 중인 컴퓨터에서 연결을 시도하는 대상은 그 컴퓨터 자체가 된다.

127.0.0.1, localhost와 동일한 의미를 갖는다.

출처: 나무위키, 루프백 IP

네트워크 인터페이스 (Network Interface)

네트워크 인터페이스(Network Interface)는 컴퓨터가 네트워크에 연결될 수 있는 경로를 제공한다. 이는 물리적인 네트워크 카드(이더넷, Wi-Fi 등)일 수도 있고, 루프백 인터페이스처럼 가상의 인터페이스일 수도 있다.

바인딩(Binding)

서버가 특정 IP 주소와 포트에서 대기하고 있을 때, 이를 바인딩이라고 한다. 서버는 특정 IP 주소나 포트에 바인딩하여 해당 주소로 들어오는 요청을 처리한다.

127.0.0.1 (localhost)

루프백(loopback) IP 주소로, 네트워크 상에서 자기 자신을 참조한다. localhost와 동일한 의미를 가지지만, 숫자형 IP 주소이다.

0.0.0.0

0.0.0.0모든 네트워크 인터페이스를 나타내는 IP 주소로 사용된다. 이는 주로 서버나 네트워크 설정에서 특정 네트워크 인터페이스를 지정하지 않고 모든 네트워크 인터페이스에서 들어오는 요청을 수신할 때 사용된다.

서버 애플리케이션이 0.0.0.0로 바인딩되면, 이 서버는 해당 컴퓨터의 모든 IP 주소에서 접근 가능한 상태가 된다. 즉, 외부에서 해당 컴퓨터의 IP 주소로 접근할 수 있게 된다. 클라이언트의 의미: 클라이언트 측에서는 0.0.0.0이 지정되지 않은 IP 주소를 나타낼 수 있습니다. 예를 들어, 네트워크 인터페이스가 아직 설정되지 않았거나 할당된 주소가 없는 상태를 나타냅니다.

예를들어 127.0.0.1:8080에 바인딩된 서버는 로컬 머신에서만 접근할 수 있으나 0.0.0.0:8080에 바인딩된 서버는 모든 네트워크 인터페이스에서 접근 가능하다. 즉, 로컬 네트워크에서든, 외부 네트워크에서든 서버에 접근할 수 있다.

루프백 인터페이스

루프백 인터페이스는 물리적 네트워크 카드가 아닌, 운영체제 내에서 자체적으로 제공하는 가상의 네트워크 인터페이스이다.

keycloak

IAM 인증

리버스 프록시

SSH tunneling (SSH PortForwarding)

  1. Tunneling 이란? 데이터 스트림을 인터넷 상에서 가상의 파이프를 통해 전달시키는 기술 > 패킷 내에  터널링할 대상을 캡슐화시켜 목적지까지 전송 출처: https://24hours-beginner.tistory.com/392 [365일 24시간 초보:티스토리]

https://24hours-beginner.tistory.com/392

Leave a comment