Websocket vs HTTP

Websocket
- 장점
- 클라이언트와 서버 양방향 통신 가능
- 한번만 연결하면 유지
- 실시간 서비스에 최적화
- ws:// 또는 wss:// (보안) 방식 활용
- Websocket이 필요한 이유 = HTTP 방식의 문제점
- 풀링(Pulling)과 긴 연결(Long Polling)의 한계
- 풀링: 클라이언트가 일정 시간마다 서버에 요청 (과부하 문제)
- 긴 연결: 클라이언트가 연결을 유지하며 서버 응답을 기다림 (비효율적)
WebSocket 프로토콜 구조
- Handshake
- HTTP 요청을 통해 WebSocket 연결 수립 (Upgrade: websocket 헤더 사용)
- 메시지 송수신 (Message Exchange)
- 연결 종료 (Connection Close)
실습
실습 1 : Flask에서 WebSocket 서버 구현하기



실습 2 : 실시간 알림 서비스
실습 3 : 실시간 타이핑


실습 4 : 실시간 감정 분석
- 입력하면 서버가 텍스트 내용을 분석해 감정판별
실습 5 : 실시간 비트코인 가격 확인
VOD
Flask-migrate
- Alembic을 통해 SQLAlchemy 모델의 변경사항을 추적
- Alembic : Python으로 SQLAlchemy를 사용하고 있을때 데이터베이스를 관리해주는 마이그레이션 도구
- 데이터베이스 마이그레이션을 효과적으로 관리
- 데이터베이스 스키마 변경사항(예: 새로운 테이블 추가, 컬럼 변경, 인덱스 추가 등)이 있을 때마다 마이그레이션 파일을 생성하여 이러한 변경사항을 코드로 관리
- 마이그레이션 파일들은 버전 컨트롤 시스템에 추가되어 데이터베이스 스키마의 변경 이력을 기록하는 데 사용
- 변경사항에 따라 데이터베이스 스키마를 자동으로 업그레이드 또는 다운그레이드(이전으로 되돌리기)가 가능
초기 설정
flask db init : 처음 설정할 때 한 번만 수행 마이그레이션을 관리할 수 있는 migration 디렉토리 생성

from flask_migrate import Migrate / migrate = Migrate(app, db)
- Migrate 객체를 생성하고 Flask 애플리케이션 및 SQLAlchemy 데이터베이스 인스턴스와 연결

마이그레이션 명령어
- flask db migrate -m "migration message"
- 데이터베이스 마이그레이션을 생성하는 역할
- 모델의 변경사항이 있을 때마다 새로운 마이그레이션을 생성하여야 함
- flask db upgrade
- 생성된 마이그레이션 스크립트를 실행하여 실제 데이터베이스를 업그레이드
- migrations/versions 디렉토리에 있는 마이그레이션 스크립트가 실행
- 이 스크립트는 SQLAlchemy를 사용하여 데이터베이스의 스키마를 변경하고 모델의 변경 사항을 적용
- flask db downgrade
- 이전 마이그레이션 상태로 데이터베이스를 되돌림
마이그레이션 실습
내용 추가

