본문 바로가기
부트캠프 개발일기/Pre-Project

78일차: Solo Project

by shyun00 2023. 6. 5.

솔로 프로젝트에 앞서, 서버와 클라이언트, 배포 등에 관한 내용을 학습하였다.

❯ 서버와 클라이언트

 - 서버: 네트워크에서 다른 컴퓨터나 소프트웨어와 같은 클라이언트에게 서비스를 제공하는 컴퓨터를 말한다.

 - 클라이언트: 서비스를 제공받는 대상을 말한다.(서버에 필요한 것을 요청하고 응답을 받음)

서버의 종류

  • 웹서버:  Apache, IIS, NginX
  • 웹 애플리케이션 서버: Tomcat, WebLogic, WebSphere
  • 데이터베이스 서버: Oracle, MS-SQL, MySQL
  • 파일전송 서버: VS-FTPD, IIS
  • 메일 서버: Send-mail, Microsoft Exchange Server
  • 인쇄 서버

=> 종류에 맞는 개발 서버를 사용하여 트래픽을 분산하고, 장애에 대응할 수 있다.

서버 구성과 서버 환경 설정

 - 서버 구성: 서버 컴퓨터의 종류나 대수, 네트워크 정책이나 수용 인원 예측 등을 구성하는 것을 말한다.

 - 서버 환경 설정: 구성된 서버 컴퓨터가 적절한 서비스를 제공할 수 있도록 환경을 구성해주는 것을 말한다.
    Apache, NginX, Tomcat 등 적절한 프로그램을 통해 환경을 구성해줄 수 있다.

❯ CORS(Cross Origin REsource Sharing)

애플리케이션 간의 Origin(출처)이 다르면 스크립트 기반의 HTTP 통신을 통한 리소스 접근이 제한되는 정책 SOP(Same Origin Policy)가 적용된다.

이 때 다른 Origin간의 접근이 필요할 경우 CORS를 통해 사전 설정을 해줌으로써 선택적으로 접근 권한을 부여해줄 수 있다.

CORS 정책 동작 방식

  • Preflight Request: 요청을 보내기 전에 OPTION 메서드로 사전 요청을 보내서 해당 출처 리소스에 접근 권한이 있는지 확인하는 방법으로, 권한이 있다면 응답 Header에 Access-Control-Allow-Origin으로 요청 출처가 돌아오면 이후에 실제 요청을 보낸다. 
  • Simple Request: 특정 조건이 만족되면 Preflight Request를 생략하고 요청을 보낸다.
  • Credential Request: 요청 헤더에 인증 정보를 담아서 보내는 요청이다. 서버측 / 클라이언트측 모두 CORS 설정이 필요하다.

CORS 정책 설정 방법

크게 두가지로 구분할 수 있다. Global 설정 클래스를 이용해 특정 도메인에 모두 적용할수 있으며, 애너테이션을 사용해 컨트롤러 단에 적용할 수도 있다. (@CrossOrigin)

❯ Ngrok

네트워크 설정을 하지 않아도 방화벽을 넘어 외부에서 로컬환경에 접근할 수 있도록 해주는 터널링 프로그램을 말한다.

특정 보트를 실행하면 임시 도메인이 할당되며 해당 도메인을 통해 내 로컬에 접근이 가능하다.

ngrok http {port} 명령어를 통해 원하는 포트를 연결할 수 있다.


오늘은 간단한 ToDo App을 혼자 만들어보는 실습을 진행했다.

엔티티가 하나이고 CRUD만 구현하면 되는 간단한 내용이라 비교적 쉽게 끝낼 수 있었다.

실습을 하면서 느낀것은 특정 기능을 사용하기 위해 꼭 필요한 애너테이션이나 의존성, 코드 흐름 등에 대한 이해가 아직은 많이 부족하다는 것이었다. 내일은 마침 공휴일이라 본격적인 프로젝트에 들어가기 전에 이전에 만들었던 코드를 다시 한번 처음부터 만들어보는 시간을 가질 계획이다.