개발 일지/CS 44

REST API 의 GET 요청에는 Request Body를 넣을 수 있을까?

REST API의 GET 요청은 서버로부터 리소스를 조회하거나 검색하기 위해 사용되며, 보통은 요청 매개변수(query parameters)를 사용해서 필요한 데이터를 전달하거나 URL 경로의 특정 부분에 /{id}와 같이 변수를 넣어서 사용한다. 그렇다면 과연 GET 요청에 Request Body를 포함해서 요청을 보낼 수 있을까? 결론부터 얘기하면 HTTP 표준은 GET요청에 Request Body(요청 본문)를 포함할 수 있도록 허용한다. 하지만 GET 요청은 서버로부터 정보를 요청하고 응답을 받는 것에 중점을 두기 때문에, 요청 본문에 데이터를 담는 것은 권장되지 않는 방법이라고 한다. GET 요청에 Request Body를 넣는 것이 권장되지 않는 이유는 다음과 같다. 캐싱 : GET 요청은 캐..

개발 일지/CS 2023.06.22

[Cloud] VPC

VPC(Virtual Private Cloud)는 클라우드 내 프라이빗 공간을 제공함으로써, 클라우드를 퍼블릭과 프라이빗 영역으로 논리적으로 분리할 수 있게 한다. VPC를 사용하면 클라우드에서 사용하는 가상 서버들이 하나의 네트워크 상에 위치하며, 이를 통해 보안, 연결성, 관리 등의 이점을 제공한다. VPC는 다양한 클라우드 제공업체에서 제공하는데, 대표적으로 AWS(Amazon Web Services), Microsoft Azure, Google Cloud Platform 등이 있다. 각 제공업체마다 조금씩 다른 구성과 기능을 가지고 있지만 전반적으로 비슷한 구성과 기능을 제공한다. VPC를 구성하기 위해서는 우선 VPC 내에 사용할 IP 대역을 정의해야 한다. 이 IP 대역은 VPC 내에서 사용되..

개발 일지/CS 2023.04.08

[Cloud] Load Balancer

서비스에 너무 많은 사용자(클라이언트)가 접속하면 서버에는 과부하가 오게 된다. 이때, 과부하를 해결하기 위한 방법으로는 크게 서버의 하드웨어를 업그레이드하는 방법과 서버의 개수를 늘리는 방법이 있다. 물리적으로 서버의 사양을 높이는 방법인 Scale-Up은 서버의 수를 늘리지 않고 프로그램 구현에 있어 변화가 필요 없다는 장점이 있다. 하지만 높은 비용이 들고 업그레이드에는 한계가 있기 때문에, 클라이언트의 요청이 더욱 많아진다면 다시 부하는 발생하게 될 것이다. 두 번째로 서버의 갯수를 늘리는 Scale-Out은 여러 대의 서버가 나눠서 처리하기 때문에 사양을 높이지 않고도 비교적 저렴한 비용으로 부하를 처리할 수 있다. 이때, 클라이언트로부터 온 요청을 여러 서버에 나눠 처리할 수 있도록 교통정리를..

개발 일지/CS 2023.04.06

[Cloud] Proxy Server

프록시 서버(Proxy Server)는 클라이언트가 서버와 소통할 때, 네트워크 연결을 중개하는 서버이다. 즉, 서버에 바로 접근하지 않고 자신을 통해 서버에 접근할 수 있도록 해주는 일종의 대리 서버이다. 프록시 서버를 사용하는 이유는 여러 가지가 있다. 가장 일반적인 이유는 보안 문제 때문이다. 프록시 서버는 인터넷에서 데이터를 주고받을 때, 클라이언트와 서버 간의 연결을 암호화해서 보안을 강화할 수 있다. 프록시 서버를 통해 인터넷에 접속하면 클라이언트의 IP 주소가 노출되지 않기 때문에 개인 정보 보호에도 도움이 된다. 또한, 프록시 서버는 캐시를 사용하여 네트워크 속도를 향상할 수 있다. 프록시 서버는 이전에 요청한 데이터를 저장하고 있다가 동일한 요청이 들어오면 저장된 데이터를 반환하므로, 네..

개발 일지/CS 2023.04.05

[Cloud] Docker

Docker는 컨테이너화된 애플리케이션을 배포하고 실행하기 위한 오픈소스 플랫폼이다. 기존의 가상화 기술과는 달리, 호스트 운영체제와 컨테이너 운영체제 사이에 가벼운 추상화 계층을 제공한다. 이를 통해 동일한 운영체제에서 여러 개의 컨테이너가 실행되며, 매우 가볍고 빠르게 실행될 수 있다. 이러한 컨테이너 방식은 실행 환경에 구애받지 않고 애플리케이션을 실행할 수 있다는 장점이 있다. 컨테이너 기술은 애플리케이션을 컨테이너 내에 구성하기 때문에 의존성 충돌 문제를 해결해 준다. 또한 개발과 배포 환경을 일치시키고 수평 확장을 쉽게 할 수 있으며 각 서버에 새로운 내용을 배포하기 쉽게 만들어준다. Docker는 개발, 테스트, 배포 등 여러 단계에서 유용하게 사용될 수 있다. 애플리케이션 개발 과정에서는 ..

개발 일지/CS 2023.04.03

[Cloud] Cloud Storage(S3)

클라우드 스토리지(Cloud Storage)는 컴퓨팅 환경에서 데이터를 저장하고 관리하는 저장소이다. 컴퓨터 부품으로 비유하면 하드디스크의 역할을 하는 서비스이다. Google Drive, MYBOX, Onedrive 등이 이에 해당한다. 클라우드 스토리지는 데이터의 안정성, 가용성, 확장성 등을 제공하여 기업의 데이터 관리를 용이하게 한다. 예를 들어, 컴퓨터의 하드디스크에 저장된 파일에 접근하기 위해서는 해당 컴퓨터를 이용해야 되지만, 클라우드 스토리지를 이용하면 웹 환경에서 언제 어디서나 저장된 파일에 접근할 수 있다. S3 S3(Simple Storage Service)는 AWS에서 제공하는 객체 스토리지 서비스로, 데이터를 파일 형태로 저장하고 관리한다. 기존 클라우드 스토리지 서비스처럼 뛰어난..

개발 일지/CS 2023.04.02

[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