Deeplearning 카테고리에 Self Driving Car 논문 구현체에 대해서 코드 리뷰를 하고 발표를 하던 중에 Flask와 SocketIO에 대해서 질문이 많이 들어왔는데, 대략적인 개념만 알고, 자세히는 모르고있어서 설명을 못드렸었습니다. 질문에 대한 답을 정리하고 이번 기회에 개념을 정리하고자, 이번 포스팅을 쓰려고 합니다.
[Code Review/ self-driving lab] Udacity Self-driving Car - (1)
[Code Review/ self-driving lab] Udacity Self-driving Car - (2)
[Code Review/ self-driving lab] Udacity Self-driving Car - (3)
1. Web의 기본 구조
초기의 웹 구조는 브라우져::Client에서 특정 서버에게 html을 요청하면 웹 서버::Server는 이를 찾아서 html문서를 전송해주는 방식을 취했습니다. 이를 static contents::정적 데이터라고 하는데, 이는 고정된 데이터만 보낼 수 있었기 떄문에 제한이 많습니다.
예를 들면, 내가 이 사람의 주민번호를 주면 그 사람의 자산정보다, 개인적인 신상정보를 줘라고 하는 이러한 데이터 가공 요청은 불가능했습니다. 따라서 이를 보안하고자, Web Application Service::WAS가 나옵니다. 웹 어플리케이션 프레임워크에는 JAVA는 스프링, PHP는 라라벨, Python은 Django, Ruby는 Rails등 여러가지 프레임워크들이 존재합니다. 이러한 프레임워크들은 Database등과 연동되어 사용자 요청에 맞게 데이터를 가공해서 응답해주게 됩니다.
2. WSGI:: Web Server Gateway Interface
WAS와 Web Server는 서로의 요청과 응답에 대해서 서로 데이터를 주고 받는 통신을 해야하는데, 이러한 통신 규약을 WSGI라고 합니다.
3. WSGI Middleware
4. Flask
5. SocketIO
[Reference]
[1]. WSGI로 보는 웹서버의 개념
[2]. <Python> 4개의 Web Framework 비교
[3]. Django과 Flask 비교
[4]. 웹 서버 게이트웨이 인터페이스
[5]. Python WSGI Server와 관련된 공부
[9]. 빠르게 훑어보는 node.js - #9 Socket.IO 1/4 기본 및 채팅프로그램 만들기
[10]. WebSocket과 Socket.IO
[11]. Node.js Socket.IO #1
[12]. Socket.IO Server API