Backend

    Tools for load test

    부하 테스트, 스트레스 테스트 라고도 함. Locust.io 파이썬 기반 https://locust.io/ Locust - A modern load testing framework Example code A fundamental feature of Locust is that you describe all your test in Python code. No need for clunky UIs or bloated XML, just plain code. Select example Simple With HTML parsing Nested TaskSets locust.io Apache Jmeter JAVA 기반 http://jmeter.apache.org/download_jmeter.cgi Apache JMete..

    [백엔드 기초] 7. DB Parallelization

    Scale up vs Scale out Scale up vs Scale out 구분 Scale up Scale out 명칭 스케일업 스케일아웃 관점 서버의 하드웨어 성능을 높이는 것 서버의 수를 증가 설명 · 보통 말하는 업그레이드 · CPU 클럭 속도, 코어 수 나 메모리 그리고 하드디스크 등 서버자원을 추가하여 처리능력을 향상시키는 방식. · 기존 스토리지에 필요한 만큼의 용량 증가 · 동일한 서버/DBMS를 병렬로 구축 · 용량과 성능 요구조건에 맞추기 위해 node단위 (스토리지)로 증가되고 하나의 시스템처럼 운영 · 서버의 수를 증가시켜서 처리능력을 향상시키는 방식 · 여러 대의 서버를 하나의 시스템으로 인식시키는 방법 비용 · 컨트롤러나 네트워크 인프라 비용은 별도로 발생하지 않고 디스크만 추..

    [백엔드 기초] 6. Web server(Nginx, Gunicorn, Dramatiq)

    Web server 개요 1. 클라이언트 웹서버(Nginx)로 HTTP 요청 2. 웹서버(Nginx) 웹 서버. 클라이언트로부터의 HTTP요청을 받아 정적인 페이지/파일을 돌려줌. (동적인 부분은 uWSGI가 담당) 가벼움과 높은 성능이 목표. 웹 서버, 리버스 프록시 및 메일 프록시 기능을 가짐. 3. Unix Socket 웹서버(Nginx) - 웹어플리케이션서버(uWSGI) 사이의 통신을 매개 HTTP 요청을 사용할 수도 있지만 서버 안쪽에서의 통신이기 때문에 socket 방식이 overhead가 적어서 더 효율이 좋음 4. 웹어플리케이션서버(uWSGI) 웹 서버(Nginx)와 웹 애플리케이션(Django)간의 연결을 중계 (Nginx에서 받은 요청을 Django에서 처리하기 위한 중계인 역할) Ng..

    [백엔드 기초] 5. Docker

    Docker 도커: 컨테이너 기반의 오픈소스 가상화 플랫폼 다양한 프로그램, 실행환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 단순하게 해줌. 백엔드 프로그램, 데이터베이스 서버, 메시지 큐등 어떤 프로그램도 컨테이너로 추상화할 수 있고 조립PC, AWS, Azure, Google cloud등 어디에서든 실행할 수 있음. Container 운영체제를 기반으로 만들어진 대부분의 Software는 그 실행을 위하여 OS와 Software가 사용하는 동적 Library에 대하여 의존성을 가짐. 즉, Software의 실행을 위해선 OS와 Library를 포함, Software가 필요로 하는 파일 등으로 구성된 실행환경이 필요한데, 하나의 시스템 위에서 둘 이상의 Softw..

    [백엔드 기초] 4. Database, PostgreSQL

    PostgreSQL란? PostgreSQL은 오픈 소스 객체-관계형 데이터베이스 시스템(ORDBMS)으로, Enterprise급 DBMS의 기능과 차세대 DBMS에서나 볼 수 있을 법한 기능들을 제공한다. 약 20여년의 오랜 역사를 갖는 PostgreSQL은 다른 관계형 데이터베이스 시스템과 달리 연산자, 복합 자료형, 집계 함수, 자료형 변환자, 확장 기능 등 다양한 데이터베이스 객체를 사용자가 임의로 만들 수 있는 기능을 제공함으로써 마치 새로운 하나의 프로그래밍 언어처럼 무한한 기능을 손쉽게 구현할 수 있다. PostgreSQL의 구조 PostgreSQL은 클라이언트/서버 모델을 사용한다. 서버는 데이터베이스 파일들을 관리하며, 클라이언트 애플리케이션으로부터 들어오는 연결을 수용하고, 클라이언트를 ..

    [백엔드 기초] 3. Django REST Framework

    REST API란? REST : Representational State Transfer API : Application Programming Interface HTTP의 URL과 HTTP method(GET, POST, PUT, DELETE)를 사용하여 API 사용 가독성을 높인 구조화된 시스템 아키텍쳐(프레임워크) REST API를 통해 REST 서버는 API를 제공, 클라이언트는 사용자 인증이나 세션/로그인 정보 등을 직접 관리하는 구조로 각각의 역할이 확실히 구분되기 때문에 클라이언트와 서버에서 개발해야 할 내용이 명확해지고 서로 간 의존성이 줄어들게 됨. 데이터베이스 내부의 자료를 직접 전송하는 것이 아니라 HTML, XML, JSON와 같은 데이터 형태를 통해 제공하게 되고, 사용자들이 접근할..

    [백엔드 기초] 2-1. Django

    Django: 파이썬 기반 웹 프레임워크 MVC(MTV) : 디자인 패턴 Model 데이터를 입력하고 전송받으면 데이터베이스 서버에 저장되는데 이것을 다루는 것이 모델. 안전하게 데이터를 저장함. View 데이터를 적절하게 가공/처리 후 템플릿으로 넘겨 유저에게 보여줌. 유저가 원하는 형태의 데이터로 전송. Controller (Template in Django) 사용자에게 보여지는 부분. 사용자의 입력과 이벤트에 반응하여 Model과 View를 업데이트. Project & App 하나의 프로젝트가 하나의 웹사이트 역할.(각종 앱+설정들) 프로젝트 안에 다양한 기능이 있으며, 의미있는 특정 기능을 app으로 관리함. 작동 원리 WSGI(wsgi.py)웹 서버와 장고를 적절히 결합시켜 주는 역할. URL ..

    [백엔드 기초] 2. Python

    기초 문법 변수, 자료형(리스트, 튜플, 딕셔너리), while, for, if-else, 함수 위키독스 온라인 책을 제작 공유하는 플랫폼 서비스 https://wikidocs.net/book/1 모듈(import), 패키지, 가상환경(venv) 모듈: 함수/변수/클래스를 모아 놓은 파일 (다른 파이썬 프로그램에서 불러와 사용할 수 있게끔 만든 파이썬 파일) 패키지: 도트(.)를 사용하여 파이썬 모듈을 계층적(디렉터리 구조)으로 관리할 수 있게 해주는 것 profileapp/ __init__.py admin.py apps.py decorators.py forms.py models.py tests.py urls.py view.py migrations/ __init__.py 0001_initial.py 모듈..