관리 메뉴

제뉴어리의 모든것

[Section 4] [Spring Security] 운영환경 구성 - 1 본문

코드스테이츠/정리 블로깅

[Section 4] [Spring Security] 운영환경 구성 - 1

제뉴어리맨 2022. 10. 4. 23:18

전체 항목

  • Cloud Computing
  • Deploy
  • EC2
  • RDS
  • S3

Cloud Computing

정의는

"클라우드 컴퓨팅은 사용자의 직접적인 활발한 관리 없이 특히, 데이터 스토리지와 컴퓨팅 파워와 같은 컴퓨터 시스템 리소스를 필요시 바로 제공하는 것을 말한다"

이다.

모호하다.

아래는 내가 정의한 내용이다.

일단 클라우드란 구름을 의미하듯이,

존재하지만 실제 물리적으로 접근 할 수 없는 것 개념을 말한다.

즉, 클라우드 컴퓨팅이란 

컴퓨터의 리소스를 사용하지만 컴퓨터의 물리적인 요소를 가지고 있진 않는것을 말한다.

예를 들어 설명하면, 특정 서비스에서 서버로 사용할 컴퓨터를 직접 사서 회사에 두는것이 아니라,

AWS, Azure, GCP 같은 서버 대여 서비스에서 서버를 구입하여 해당 서버의 조작을 해당 서비스가 제공하는 화면에서 마우스 몇번의 클릭으로 조작이 가능한것이다.

 

서버를 클라우드 컴퓨팅 이전 방식으로 구성할때의 방식은 아래와같다.

서버 컴퓨터를 서비스하는 업체의 한 공간에 두는것이다.

 

기존 방식의 단점

 

1. 주기적 관리 필요
서버 컴퓨터의 원활한 작동을 위해 컴퓨터 관리및 주위 환경을 관리해야한다.

 

2. 물리적 공간의 한계
서버의 기능을 올리기위해 여러개의 서버를 증설하거나,

한 서버의 성능을 올리기 위해 부품을 다량 추가하거나 하는 상황에서 어쨋든 공간적을 수요가 증가한다.

 

3. 유휴자원 발생 

서비스가 한가할때에 무의미하게 남아도는 서버의 리소스 발생

 

그래서 생겨난 것이 클라우드 컴퓨팅이다.

 

클라우드 컴퓨팅의 장점

 

1. 필요할때마다 서버의 성능을 조절 가능

 

2. 고정적을 발생되는 온프레미스 방식과 달리 사용한 만큼만 비용 지불

 

3. "스냅샷" 이란 개념으로 인해 현 서버의 상태를 그대로 다른 서버로 옮기기가 가능

 

클라우드 컴퓨팅의 단점

 

1. 서버를 대여해주는 서비스에 종속적이게 된다.

서버 대여 서비스의 서버에서 문제가 발생할 경우, 해당 서비스를 이용하는 다른 일반적인 서비스들에게도 영향을 미침. 

 

 

클라우드 컴퓨팅 서비스의 형태

 

  • SaaS (Software as a Service)
    최소 필요한 서버와 네트웍 리소스, OS 레벨, 심지어 필요한 앱까지 제공

  • PaaS (Platform as a Service)
    최소 필요한 서버와 네트웍 리소스, OS 레벨 까지 제공

  • IaaS (Infrastructure as a Service)
    최소 필요한 서버와 네트웍 리소스 제공

https://www.bmc.com/blogs/saas-vs-paas-vs-iaas-whats-the-difference-and-how-to-choose

 

Deploy (배포)

배포는 개발한 서비스를 일반 사용자들이 접근하여 사용할 수 있도록 제공하는것이다.

 

배포는 기본적으로 4단계를 거친다.

  • Development
    개발 단계

  • Integration
    각자가 개발한 내용들을 취합하여 합치는 단계

  • Staging
    배포 환경과 가장 유사한 황경에서의 테스트,
    가짜 데이터들을 가지고 실제 환경처럼 테스트를 해본다.

  • Production
    배포되어 실제 서비스가 제공되어지는 상황

 

원활한 배포를 위해 개발단계에서 주의해야하는 사항

  • 절대경로 X, 상대경로 O
  • 환경에 따라 포트 분기 가능하도록 환경변수 이용
  • Docker 같은것을 사용하여 개발환경 통일

 

EC2 (Elastic Compute Cloud)

EC2란 그냥 컴퓨터 자체를 의미한다.

즉, 물리적으로 우리가 가지고 있진 않지만 AWS와 같은 서비스업체에게 컴퓨터를 빌리는것이다.

EC2란 컴퓨터란 개념이고,

EC2에서 사용되는 인스턴스란 개념은 컴퓨터 각 한대, 한대를 의미한다.

 

+ 추가적인 개념

AMI (Amazon Machine Image)

AWS로부터 EC2를 빌릴때, 제공 받는 EC2의 환경 자체를 의미한다.

쉽게 말해 EC2에 최초 깔려있는 런타임 (ubuntu + node.js, windows + jvm) 까지 포함한 개념을 말한다. 

[OS + 깔려있는 환경]의 한 덩어리 (템플릿) 개념이다.

 

 

RDS (Relational Database Service)

RDS란 쉽게 말해 DB의 기능만을 제공하는 서버를 의미한다. (DB 중에서도 RDB)

당연히 생성할때, DB의 종류도 고를 수있다.

MySQL, MariaDB, MS-SQL 다양하다.

 

 

여기서 의문!

EC2가 그냥 컴퓨터라면, EC2에 DB 설치해서 사용하면 되는데, 

왜 굳이 RDS를 사용하는가?

RDS는 DB에 특화된 서비스이다.

그로인해 DB의 튜닝이나 세팅들을 콘솔창에서 클릭 몇번으로 조절이 가능하다.

 

예를 들어 설명하자면, 

EC2에 DB도 있는 경우,

만약 DB의 리소스가 부족하여 증설해야할때,

가능은 하지만 굉장히 수고로운 작업들이 필요할것이다.

그러나, RDS를 사용하면 클릭 몇번으로 서버의 리소스를 늘릴 수 있다.

 

 

S3 (Simple Storage Service)

+ 사전 지식

클라우드 스토리지란?

인터넷 공간에 데이터를 저장하는 저장소.

 

S3란 아마존에서 제공하는 클라우드 스토리지 서비스이다.

단순히 데이터만을 저장하기 위한 서버를 말한다.

장점 몇가지를 말하자면,

저장공간이 부족할 경우 손쉽게 용량 증설 가능.

물리적인 한 공간에만 있는것이 아니고 안전하게 보안된 여러 데이터 센터에 분산되어 저장되어 있으므로,

데이터 유실이 불가능에 가까움.

 

+ 다양한 스토리지 클래스

  • S3 Standard 
    일반적으로 많이 쓰임.
    액세스가 자주 발생될 경우 사용

  • S3 Glacier
    데이터 장기 보관 목적
    데이터를 보관하는 비용 저렴

+ 버킷이란?

  • 객체(파일)를 담는 최상위 디렉토리
  • 버킷의 이름은 리전(지역)에서 유일해야함
  • 버킷의 정책을 생성하여 액세스 권한 부여 가능

+ 버킷에서 객체란?

버킷에 저장되는 파일을 "객체"라고 한다

그리고 그 객체는

파일, 메타데이터 로 구성된다.

그리고 그 파일은 또

Key,

Value 형식으로 저장된다.

Key는 파일을 구별하는 식별자이고

Value가 실제 파일 데이터를 의미힌다.

 

그리고 메타데이터는

객체의 타입, 객체 생성일자 같은 객체의 이력같은 데이터이다.

그리고 모든 객체는 고유한 URL을 가지고 있다.

 

URL 예시:

http://[버킷 이름].S3.amazonaws.com/[객체키] 

 

쉽게 말해서, 버킷은 S3에서 최상위 디렉토리이고,

버킷에 담기는 데이터를 객체라고 하며

객체는 파일, 메타데이터로 구성된다.

그리고 그 중 파일은 Key와 Value로 구성된다.

 

오브젝트가 우리가 알던 기존 파일이란 개념을 wrapping 한 개념인것 같다.