SW개발/IT 용어

    CORS란? (Cross-origin resource sharing)

    CORS란? 교차 출처 리소스 공유(이하 CORS)는 웹 페이지 상의 제한된 리소스를 최초 자원이 서비스된 도메인 밖의 다른 도메인으로부터 요청할 수 있게 허용하는 구조이다. - 위키백과 CORS 풀어서 설명하기 위키백과의 설명을 예시와 함께 자세히 풀어보겠습니다. 프론트의 도메인은 example.com:8080, 백엔드의 도메인은 example.com:8000 라고 가정하고 설명을 진행하겠습니다. 프론트엔드에서 백엔드 API로 요청을 진행합니다. 백엔드 서버에서는 다른 도메인임을 감지합니다. (포트번호가 상이하기에 다른 도메인으로 취급함) CORS 허용 여부에 따라 프론트엔드의 요청을 허용하거나 거부합니다. 우리는 종종, 개발을 하면서 다음과 같은 메시지를 많이 본 경험이 있습니다. 🚨 Access t..

    [Storage]Cookie vs Local Storage vs Session Storage 차이점

    웹 개발을 하다보면 자연스레 접하게 되는 Cookie, Local Storage, Session Storage의 차이점에 대해서 포스팅해보려고 합니다. 각각 다르다는 것은 알겠지만, 무엇이 어떻게 다를까요? Cookie 란? 쿠키란 인터넷 사용자가 웹 사이트를 방문할 경우 해당 웹 사이트의 서버를 통해 사용자의 컴퓨터에 설치되는 작은 기록 정보 파일입니다. 주로 팝업창과 같은 경우에 이용될 수 있습니다. Cookie 의 특징 웹 사이트에서 쿠키가 설정되면 이후에 일어나는 모든 웹 요청에 쿠키 정보를 포함시켜 웹 사이트의 서버로 전송합니다. 하나의 사이트에서 저장할 수 있는 최대 쿠키 수는 20개이고, 총 크기는 4KB로 제한되어 있습니다. 쿠키는 만료일자를 지정할 수 있어, 지정된 날짜에 자동으로 제거됩..

    [WAS]WAS 와 Web Server의 차이점

    WAS 란? Web Application Server로, 쉽게 말하자면 WSGI + Application Server의 조합을 의미합니다. 클라이언트로 동적인 컨텐츠를 전달해주는 역할을 수행합니다. (주로 데이터베이스 서버와 같이 수행됩니다) 위의 예시와 같은 프로덕션 환경일 경우, Gunicorn + Django의 조합이 WAS가 됩니다. Web Server 란? Web Server는 클라이언트가 요청을 하면 웹 페이지를 클라이언트로 전달하는 역할을 수행합니다. 클라이언트로 정적인 컨텐츠를 전달해주는 역할을 수행합니다. (Static(CSS, JS, Image)파일을 포함한 HTML 문서) 동적인 컨텐츠에 대한 요청이 들어올 경우 WAS에게 요청합니다. (NGINX -> WSGI -> Django ->..

    [SoC]관심사 분리란?

    관심사 분리란? (Separation of concerns) 컴퓨터 프로그램을 구별된 부분으로 분리시키는 디자인 원칙으로, 각 부문은 개개의 관심사를 해결한다 - 위키피디아 https://ko.wikipedia.org/wiki/%EA%B4%80%EC%8B%AC%EC%82%AC_%EB%B6%84%EB%A6%AC 관심사 분리 - 위키백과, 우리 모두의 백과사전 컴퓨터 과학에서 관심사 분리(separation of concerns, SoC)는 컴퓨터 프로그램을 구별된 부분으로 분리시키는 디자인 원칙으로, 각 부문은 개개의 관심사를 해결한다. 관심사란 컴퓨터 프로그램 코드 ko.wikipedia.org 현업에서 개발을 하다보면 처음에는 단순한 기능에 불과했던 것들이 요구사항과 기능들이 추가됨에 따라서 점점 복잡..

    [테스트]단위 테스트(Unit test)란?

    단위 테스트(Unit Test) 단위 테스트는 하나의 모듈을 기준으로 독릭적으로 진행되는 가장 작은 단위의 테스트이다. 여기서 모듈이란 하나의 기능 혹은 .py와 같은 파일을 일컫는 말이다. 예를 들어 회원가입 메소드가 있고 이를 위한 독립적인 테스트를 1개의 단위테스트라고 부를 수 있다. 테스트 작성의 필요성 테스트 종류에는 단위 테스트, 통합 테스트 등 여러가지 종류의 테스트가 존재한다. 각각 종류는 다르지만 테스트 코드를 작성하는 이유는 전부 동일하다. 사람이 하는 테스트는 완벽하지 않다 -> 사람은 기계가 아니기에 항상 모든 조건을 동일하게 테스트 할 수 없다. 테스트에 드는 비용을 절감할 수 있다 -> 직접 기능을 수행하며 테스트를 하는 것 보다 테스트 코드를 돌려보는 것이 시간 절감에 도움 된..

    [Gunicorn]Gunicorn 란? 쓰는 이유는?

    Django 개발을 진행하고 배포를 결정하는 순간부터는 gunicorn이나 uWSGI라는 기술들을 항상 접하게 된다. gunicorn은 WSGI기술의 일종으로서 무슨 역할을 하고 왜 쓰는지에 대해서 알아보자. WSGI 란? 파이썬 애플리케이션이(파이썬 스크립트) 웹 서버와 통신하기 위한 인터페이스이다. 웹서버에서의 요청을 해석하여 파이썬 애플리케이션 쪽으로 던지는 역할을 수행한다. Gunicorn 란? 쓰는 이유는? Gunicorn은 Python WSGI로 WEB Server(Nginx)로부터 서버사이드 요청을 받으면 WSGI를 통해 서버 애플리케이션(Django)로 전달해주는 역할을 수행한다. Django의 runserver 역시도 똑같은 역할을 수행하지만 보안적으로나 성능적으로 검증이 되지 않았기 때..

    [Webhook]웹훅이란?

    Webhook 이란? "A webhook in web development is a method of augmenting or altering the behavior of a web page or web application with custom callbacks." (위키피디아 발췌) 위키피디아의 설명에 따르면 웹훅은 웹페이지 또는 웹앱애서 발생하는 특정 행동(이벤트)들을 커스텀 Callback으로 변환해주는 방법이다. 조금 더 풀어서 설명하자면, 일반적인 API(Polling)는 클라이언트가 서버를 호출하는 방식이다. 하지만 웹훅의 경우 서버에서 특정 이벤트가 발생했을 때 클라이언트를 호출하는 방식이며 "역방향 API"라고도 부른다. callback URL은 서버측에서 이벤트가 발생했을 때 클라이언트..

    [Kubernetes]쿠버네티스란?

    Kubernetes 란? K8s라고도 알려진 쿠버네티스는 컨테이너화된 애플리케이션을 자동으로 배포, 스케일링 및 관리해주는 오픈소스 시스템이다. 쿠버네티스는 다양한 애플리케이션과 서비스들을 컨테이너화 시킨 다음, 서버에 가져올 경우 적절하게 배치를 해주며 관리를 해주는 Container Orchestration 시스템이라고 생각하면 된다. Container Orchestration 시스템에는 Kubernetes 이외에도 Docker Swarm, Apache Mesos 등이 존재한다. 쿠버네티스의 여정 전통적인 배포 시대 초기에는 애플리케이션을 물리 서버에서 실행하는 방식이었다. 한 물리 서버에서 여러 애플리케이션의 리소스 한계를 정의할 방법이 없었기에, 리소스 할당에 문제가 발생했다. 예를 들어 물리 서..

    [Docker]Docker(도커)란? (feat. Linux 컨테이너)

    Docker 란? 도커는 IT 소프트웨어로서 Linux 컨테이너를 만들고 사용할 수 있도록 하는 컨테이너화 기술이다. 도커를 사용하면 컨테이너를 매우 가벼운 모듈식 가상머신처럼 다룰 수 있게 된다. 또한 컨테이너를 구축, 배포, 복사하고 한 환경에서 다른 환경으로 이동하는 등 유연하게 사용할 수 있고, 애플리케이션을 클라우드에 최적화하도록 지원한다. Linux 컨테이너란? Linux 컨테이너는 운영체제 수준의 가상화 기술로 리눅스 커널을 공유하면서 프로세스를 격리된 환경에서 실행하는 기술이다. 하드웨어를 가상화하는 가상 머신(VM)과 달리 커널을 공유하는 방식이기 때문에 실행 속도가 빠르고, 성능상의 손실이 거의 없다. 컨테이너로 실행된 프로세스는 커널을 공유하지만, 리눅스 namespaces, cgro..

    [HAProxy]HAProxy 란?

    HAProxy 란? HAProxy는 기존의 하드웨어 스위치를 대체하는 소프트웨어 로드 밸런서로, 네트워크 스위치에서 제공하는 L4, L7 기능 및 로드 밸런서 기능을 제공한다. 설치가 쉽고 빠르기에 서비스 이중화(HA- High Availability)를 구성하는데 주로 사용한다. 로드 밸런싱이란? HAProxy 기술을 알기전에 먼저 Load Balancing 이라는 기술을 알아야 한다. Load Balancing 이란 부하 분산을 위해서 가상 IP를 통해 여러 대의 서버에 접속을 분배하는 기능을 말한다. 로드 밸런서를 사용해야 하는 이유 클라이언트의 수가 많아짐에 따라 요청의 수가 늘어나게 되면 서버에는 부하가 걸리게 된다. 이를 해결하기 위해선 크게 두가지의 방법이 존재한다. Scale-up : 서버..