서버는 네트워크를 통해 다른 컴퓨터나 장치에 서비스를 제공하는 컴퓨터 시스템이다. 주로 서버는 클라이언트-서버 모델에서 서비스를 제공하고, 클라이언트는 서버에서 제공하는 서비스를 사용하는 역할을 합니다.
간단히 말하면, 서버는 데이터, 파일, 웹페이지, 애플리케이션 등을 클라이언트에게 제공하거나 처리하는 역할을 한다. 서버는 항상 켜져 있고, 네트워크를 통해 다양한 요청에 응답하며 필요한 데이터나 서비스를 제공한다.
서버는 여러 종류가 있을 수 있다. 예를 들면:
웹 서버 (Web Server): 웹 페이지, 이미지, CSS, JavaScript 등을 클라이언트에게 제공하여 웹 서비스를 가능하게 한다.
데이터베이스 서버 (Database Server): 데이터베이스에 접근하여 데이터를 저장, 검색, 수정, 삭제하고, 클라이언트 애플리케이션에 필요한 데이터를 제공한다.
파일 서버 (File Server): 파일이나 데이터를 클라이언트에게 공유하거나 저장하기 위한 서버이다.
애플리케이션 서버 (Application Server): 특정 애플리케이션을 실행하고 그 결과를 클라이언트에게 전달하는 서버이다.
서버는 일반적으로 고성능, 고용량, 신뢰성이 높아야 합니다. 또한 보안에도 신경을 써야하며, 여러 클라이언트로부터 동시에 요청을 처리할 수 있도록 설계되어야 한다.
● 서버를 운영하는 방법 2가지
크게 두가지로 나뉜다.
- 온 프레미스
온프레미스 서버는 기업이나 조직의 내부 시설 안에 직접 구축하고 유지하는 서버를 말한다. 즉, 클라우드 서비스를 사용하지 않고 자체적으로 하드웨어와 소프트웨어를 구매하고 관리하는 방식을 의미한다. 여기에는 몇 가지 주요 특징이 있다.
물리적 위치: 온프레미스 서버는 조직이나 기업의 물리적인 시설 내에 존재합니다. 이는 보통 전용 서버 룸, 데이터 센터, 또는 서버 랙 안에 배치된다.
직접적인 관리: 온프레미스 서버는 해당 조직의 IT 팀 또는 담당자에 의해 직접 관리된다 이는 하드웨어의 유지보수, 소프트웨어 업데이트, 보안 등을 내부에서 책임지는 것을 의미한다
비용 및 자원 제어: 조직은 하드웨어와 소프트웨어를 직접 구매하므로 초기 투자비용이 높을 수 있다. 하지만 이후에는 운영 비용을 상대적으로 효율적으로 관리할 수 있다.
보안 및 컨트롤: 조직은 자체 보안 정책을 적용하고 데이터를 직접 관리할 수 있어 보안 및 컨트롤 측면에서 높은 수준의 유연성을 제공한다.
온프레미스 서버는 클라우드 서비스와 대조적으로 자체 인프라를 소유하고 운영하는 모델이며, 특히 보안 및 컨트롤이 중요한 조직이나 규제가 높은 업종에서 선택되는 경향이 있다.(유지보수가 어렵고 다시 구축하는등 어려움이 있어 많은 기업이 클라우드로 선택하는 기업들이 늘어나는 추세이다.)여기서 오는 단점도 있으나 장점으로는 서버를 온전히 통제가 가능하다는 장점이 존재한다.
- 클라우드 컴퓨팅
클라우드 컴퓨팅은 인터넷을 통해 컴퓨터 리소스(서버, 스토리지, 네트워크 등)를 제공하고 액세스하는 기술로, 필요한 서비스를 유연하게 이용할 수 있게 한다. 사용자는 자체적으로 하드웨어를 소유·운영하지 않고 필요한 만큼의 자원을 신속하게 확장하거나 축소하여 비용을 절감하며, 데이터와 애플리케이션을 온라인으로 관리한다.
간단하게 설명하면 다른 클라우드 기업에서 온프레미스로 서버를 운영하고 있는 부분을 빌려서 사용한다. 이것을 클라우드 컴퓨팅을 사용한다고 하는것이다.
- 클라우드 컴퓨팅의 구분
클라우드 컴퓨팅은 제공하는 서비스로 3개의 계층으로 구분지은다.
IaaS(Infrastructure as a Service)
IaaS 는 클라우드 컴퓨팅의 가장 기본적인 형태 인프라를 구축하기 위해 필요한 컴퓨터를 대여해주는것을 의미
IaaS 대여받은 컴퓨터의 대부분의 리소스에 접근하여 서비스를 구성 관리하며 가장 많은 제어권을 가지고 있지만 가장많은 부분을 사용자가 구성하고 관리 해야하는 단점이 존재한다.
- > AWSEC2
- EC(eleastic cloud computing) 탄력적으로 빌려쓸 수 있는 컴퓨터 - 컴퓨터 빌려 쓰기 - 가장 많은 제어권을 가짐 - 윈도우 등 어떤 os를 쓸건지 내가 다 일일이 정해야한다.
PaaS(Platform as a Service)
PaaS는 IaaS에 더불어 소프트웨어를 개발하고 운영하기 위해 필요한 구성요소들을 플랫폼화해서 제공해주는 서비스다. PaaS를 사용하면 개발자들은 소프트웨어의 운영에 대한 관리를 PaaS에 위임할 수 있기 때문에 효율적인 개발이 가능하다. 다만, 플랫폼의 형태로 제공된다는 점으로 인해 특정 플랫폼에 종속적이 될 수 있다는 점, 해당 플랫폼에서 접근을 허용하지 않는 부분은 제어할 수 없다는 점, IaaS에 비해 더 높은 비용을 지불해야 할 수도 있다는 점 단점들도 있다. -> AWS Elastic BeanStalk, Heroku, Github Pages(배포 플랫폼 서비스) - 개발자야 웹서비스 운영할거야? 웹서비스 운영하기 편하게 플랫폼화 시켜서 너희들에게 제공해줄게 - 약간 프레임워크같은 느낌 플랫폼에서 제공하는 것들만 사용할 수 있다는 단점을 가짐
SaaS(Software as a Service)
SaaS는 클라우드 서비스에 더불어, 고객이 이를 사용할 수 있는 소프트웨어가 함께 제공되는 형태를 의미한다. 클라우드 서비스를 통해서 제공받기에 명시적으로 애플리케이션을 PC에 설치할 필요가 없으며, 서비스를 활용하기 위해 만들어진 소프트웨어가 제공되기에 이를 통해 편리하게 여러 기능등을 제공받고 활용할 수 있는 형태이다.
-> DropBox, iCloud, Netflix, Google Apps, Slack
- AWS S3
AWS의 S3서비스는 Simple Storage Service의 약자입니다. Storage라는 표현 그대로 특정한 파일을 저장하고 인터넷상으로 접근할 수 있게 해주는 서비스이다. 보통 서비스에 필요한 이미지나 파일등을 저장해두는 용도로 사용하지만 정적인 파일들을 안정적으로 제공할 수 있다는 점을 이용해서 정적 웹사이트 호스팅에도 사용할 수 있다.
Create React App을 이용해서 만든 리액트 프로젝트의 경우 build 명령어를 실행하면 정적인 build 파일들이 생성되고 이를 브라우저에서 접근해서 실행하면 Client Side Rendering을 통해서 동작하는 특징을 이용해서 S3서비스를 통해서 배포를 할 수 있다. csr 같이 검색이 필요없는 (관리자페이지) 등은 s3로 호스팅이 가능하다 => S3로 호스팅 할 수 있음
Next.js는 동적이고 ssr 기능이 필요하여 호스팅을 못한다. => S3 호스팅할 수 없음