전체 글 342

[Cloud] RDS

RDS(Relational Database Service)는 AWS에서 제공하는 관계형 데이터베이스 서비스이다. RDS를 사용하면 데이터베이스 인프라를 쉽게 관리하고 확장할 수 있으며, 데이터베이스 관리에 대한 부담을 줄일 수 있다. RDS는 여러 가지 관계형 데이터베이스 엔진을 지원하고 대표적으로는 MySQL, PostgreSQL, Oracle Database, Microsoft SQL Server 등이 있다. 이러한 데이터베이스 엔진을 선택하고 RDS 인스턴스를 시작하면 AWS에서 자동으로 데이터베이스 서버를 프로비저닝하고 데이터베이스 엔진을 설치한다. 이후에는 데이터베이스 관리자가 데이터베이스 설정, 보안, 모니터링 등을 관리할 수 있다. 따라서 RDS를 통해 데이터베이스 관리자는 데이터베이스 인프..

개발 일지/CS 2023.04.01

[Cloud] Amazon EC2

EC2(Elastic Computer Cloud)란 아마존 웹 서비스에서 제공하는 클라우드 컴퓨팅 서비스로, AWS에서 원격으로 제어할 수 있는 가상의 컴퓨터를 한 대 빌리는 것과 같다. EC2의 서비스는 PC방과 같이 사용한 만큼의 비용을 지불하기 때문에 '탄력적인'이라는 의미의 Elastic이 붙어 있고, 이는 비용적인 부분 외에도 필요에 따라 성능, 용량을 자유롭게 조절할 수 있다는 의미를 갖고 있다. EC2 인스턴스는 가상 서버 즉, 1대의 컴퓨터를 의미하는 단위이고 AWS에서 컴퓨터를 빌리는 것을 인스턴스를 생성한다고 한다. 인스턴스당 하나 이상의 CPU, 메모리, 스토리지, 네트워크 등의 리소스를 할당받는다. 이러한 인스턴스는 사용자가 원하는 운영체제와 애플리케이션을 실행할 수 있으며, 필요에..

개발 일지/CS 2023.03.31

[Cloud] Deploy

Deploy란 개발에서 '배포'라는 의미를 갖는다. 클라우드 컴퓨팅에서의 deploy(배포)는 소프트웨어 애플리케이션을 개발자가 작성한 코드와 필요한 리소스를 클라우드 환경에 전달하여 실행 가능한 상태로 만드는 것을 말한다. 배포는 애플리케이션의 새로운 버전이나 업데이트가 있을 때, 이를 클라우드 환경에 배치하여 사용자가 새로운 버전의 애플리케이션을 사용할 수 있도록 하는 과정이다. 배포는 일반적으로 자동화되어 있으며, 클라우드 제공업체에서 제공하는 배포 도구를 사용하거나 개발자가 직접 배포 스크립트를 작성하여 배포를 수행할 수 있다. 이를 통해, 애플리케이션의 배포 과정을 단순화하고 인력 및 비용을 절감할 수 있다. 순서 배포는 회사마다 추가적인 과정이 있을 수 있지만, 일반적으로 다음과 같은 순서로 ..

개발 일지/CS 2023.03.30

[Cloud] Cloud Computing

클라우드가 등장하기 이전에는 전산실 등에 컴퓨터를 배치하고 인터넷을 연결하여 서비스를 제공했었다. 서버가 요청에 대한 수용 능력이 한계에 도달한 경우, 같은 공간에 더 많은 컴퓨터를 제공하거나 컴퓨터의 성능을 높이는 방식을 사용했지만, 이런 방식은 주기적인 관리가 필요하고 인력, 공간 및 비용의 문제가 발생했다. 이런 상황에서 추가적인 서버 증설이 어렵게 되면서 데이터 센터의 유휴 자원을 대여하는 서비스, 바로 클라우드 컴퓨팅 기술이 등장하기 시작했다. 클라우드 컴퓨팅(Cloud Computing)은 인터넷을 통해 컴퓨팅 자원(하드웨어, 소프트웨어, 데이터 저장 등)을 제공하는 서비스다. 따라서 클라우트 컴퓨팅 서비스를 통해 기존에 사용되던 서버, 스토리지 등의 IT 인프라를 대체할 수 있으며, 이러한 ..

개발 일지/CS 2023.03.29

[Spring WebFlux] Reactive Programming

리액티브 프로그래밍(Reactive Programming)은 비동기적인 데이터 스트림을 다루는 프로그래밍 패러다임 중 하나로, 이벤트 기반(event-driven) 또는 데이터 흐름(data-flow) 프로그래밍 모델에서 사용된다. 데이터의 처리 및 변환을 이벤트 기반으로 수행하며, 데이터의 상태 변화에 따라 비동기적으로 반응(react)한다. 리액티브 프로그래밍에서는 데이터가 지속적으로 발생하는 것 자체를 데이터에 어떤 변경이 발생함을 의미하며, 이 변경 자체를 이벤트로 간주하고 이벤트가 발생할 때마다 데이터를 계속해서 전달한다. 리액티브 프로그래밍은 높은 성능과 확장성을 갖는 시스템을 구현하기 위해 사용되며, 모바일 애플리케이션, IoT 기기, 클라우드 네이티브 애플리케이션 등 다양한 분야에서 사용되..