DB
PHP
LLM

S&P 500

SPI@SPX 미국 2026.05.15 16:46 현지시간 기준 |10분 지연제공

7,408.50

전일대비 92.74 ( -1.24% )

나스닥 종합

NAS@IXIC 미국 2026.05.15 16:15 현지시간 기준 |15분 지연제공

26,225.15

전일대비 410.07 ( -1.54% )

다우 산업

DJI@DJI 미국 2026.05.15 16:20 현지시간 기준 |15분 지연제공

49,526.17

전일대비 537.29 ( -1.07% )

무료 SSL 인증서 발급

작성자아이디 : skok1025, 2024-01-08 22:38:30
카테고리 : 컴퓨터공학 네트워크 게시글 수정

https://manage.sslforfree.com/dashboard


cname 추가 

https://pbvk.tistory.com/entry/%EC%B9%B4%ED%8E%9824cafe24-CNAME-%EB%A0%88%EC%BD%94%EB%93%9C-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0


https://velog.io/@layl__a/SSLFORFREE-%EC%97%90%EC%84%9C-%EB%AC%B4%EB%A3%8C-%EC%9D%B8%EC%A6%9D%EC%84%9C-%EB%B0%9C%EA%B8%89%EB%B0%9B%EA%B8%B0


계란참치볶음밥 :: 요리레시피

작성자아이디 : skok1025, 2024-01-07 00:35:12
카테고리 : 일상 요리레시피 게시글 수정

  1. 올리브유 2~3번 두른 후라이팬에 대파 반개 자른거 투하. + 다진마늘 조금 넣기
  2. 표고버섯 자른거 투하.
  3. 계란2개 깨서 투하.
  4. 기름 뺀 참치 투하.
  5. 햇반 넣고 참기름 2~3번 두르기. 진간장 2스푼 스테비아 반스푼

CGI, WSGI, ASGI :: FastAPI

작성자아이디 : skok1025, 2023-11-26 10:36:11
카테고리 : 프레임워크 FastAPI 게시글 수정

최근에 사내에서 웹프레임워크로 FastAPI 를 채택하여 개발을 진행했는데요. 아무래도 이론적인 지식이 바탕이 된다면 운영에 더 힘이 될 것이라는 생각에FastAPI 프레임워크 관련 블로그 포스팅을 시작해보고자 합니다.

처음 시작은 FastAPI 가 "ASGI 웹프레임워크" 라고 불리는데 이게 무슨의미이고 이와 관련해서 CGI, WSGI 도 함께 알아보고자 합니다. 


CGI

  • Common Gateway Interface
  • 가장 오래된 인터페이스 (= 거의 모든 Web Server 지원)
  • Web Server 와 Application 간의 인터페이스
  • Web Server 에 HTTP Request 가 오면 Interpeter 에서 이를 감지하여 프로세스를 생성 (fork) 후 처리
  • CGI 는 요청마다 프로세스를 생성하는 방식이기 때문에 오버헤드가 심합니다. 이를 해소하기 위해 등장한 것이 FastCGI 입니다.
  • FastCGI 는 요청이 들어와도 하나의 프로세스만을 사용하여 처리를 합니다. 즉 메모리에 하나의 프로그램을 적재하여 재활용하기 때문에 CGI 에 비해 오버헤드가 월등하게 감소합니다.
  • Tomcat 에서도 FastCGI 를 사용할 수 있다고 합니다. 


WSGI

  • Web Server Gateway Interface
  • Python 어플리케이션, 스크립트가 웹서버와 통신하기 위한 인터페이스
  • CGI 는 매 요청마다 프로세스를 생성하지만 WSGI 는 한 프로세스에서 모든요청을 받습니다.
  • ㄴ 그럼 FastCGI 처럼 하나의 프로세스를 사용하는건 같은데, 무엇이 다른가 확인해보니 FastCGI 는 다양한 언어 프레임워크에서 사용이 가능하여 범용성을 띄는 반면에 WSGI 는 파이썬 앱만을 위해 고안한 인터페이스라고 합니다.
  • 많은 Request 들을 callback 으로 받아 처리합니다.
  • 대표적인 두가지 방법
    • 1) Nginx, Apache 에서 내장 모듈로 제공하는 server-often high profile 방식
      • 1-1) mod-wsgi
      • 1-2) mod-python
    • 2) Python 으로 작성된 Web App Server
      • 2-1) gunicorn
      • 2-2) cherrpy
  • WSGI 는 동기함수만 지원하여 여러작업을 동시에 처리하는데 한계가 있습니다. 그리고 아래와 같은 기능을 제공하지 않습니다.
    • Web Socket 지원 안함
      • ㄴ 어떻게 하면 가능은 하다는데 공식적인 방법은 아닌듯함.
    • HTTP 2.0 지원 안함


    ASGI


    • Asynchronous Server Gateway Interface
    • 대용량 트래픽을 더욱 더 유연하게 처리하기 위해서 등장한 인터페이스입니다.
    • WSGI 가 Synchronuous 하게 동작함으로써 발생하는 한계를 해결하기 위해 Uvicorn 과 같은 ASGI 가 나오게 되었습니다.  (* uvloop 를 이용하여 요청을 Asynchronous 하게 처리할 수 있다고함)
    • Web Socket, HTTP 2.0 을 지원합니다.
    • 현재 사내에서 서버를 시작할 때, 위 그림과 같이 gunicorn 을 process manager 로 uvicorn 으로 worker process 를 3개를 띄워 실행하고 있습니다.
      • gunicorn main:app --workers 3 --worker-class uvicorn.workers.UvicornWorker --bind 0.0.0.0:80
    • uvicorn 만으로도 worker 여러 프로세스를 띄울 수는 있지만 공식문서에서도 gunicorn 을 process manager 로 worker process 를 띄우는게 더 효율적이라고 합니다.
    • worker 와 관련한 내용은 https://fastapi.tiangolo.com/deployment/server-workers/ 를 참고해주세요. 


    해당 블로그를 작성하면서 참고했던 포스팅들의 링크를 남겨두겠습니다. 학습에 도움이 되시기를...


    end

    safe-updates :: mysql 클라이언트 옵션

    작성자아이디 : skok1025, 2023-11-03 16:10:27
    카테고리 : DB MariaDB 게시글 수정

    mysql 클라이언트를 이용하여 mysql 서버 접근시 safe-updates 라는 옵션이 있습니다. 아래와 같이 뒤에 "--safe-updates" 를 붙여주면 되는데요. 

    root@shkim-VirtualBox:~# mysql -u root -p --safe-updates

    해당 명령어의 역할은 

    UPDATE, DELETE 그리고 SELECT 쿼리가 인덱스를 사용하지 못할 때 다음과 같이 에러를 발생시키고 쿼리를 중지시켜줍니다. 

    # flag 필드는 인덱스가 걸린 필드가 아니기 때문에 조건으로 사용불가

    MariaDB [npay]> DELETE FROM t_test WHERE flag='T';

    ERROR 1175 (HY000): You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column


    # no 는 primary key 라 조건 사용가능

    MariaDB [npay]> DELETE FROM t_test WHERE no=2;

    Query OK, 1 row affected (0.001 sec)


    이게 왜 필요하냐면, 만일 인덱스를 사용하지 않고 쿼리를 실행한다면 모든 레코드를 업데이트하거나 지워버리는 불상사가 생길 수 있기 때문이죠. 

    회사에서도 운영 DB 에 접근할 일이 있는데, 앞으로는 해당 옵션을 꼭 붙여야겠네요. 

    공인 IP, 사설 IP, NAT

    작성자아이디 : skok1025, 2023-11-02 15:50:10
    카테고리 : 컴퓨터공학 네트워크 게시글 수정

    IP 주소의 부족을 공인 IP, 사설 IP 로 나누고 중간에 NAT 기술을 통해 해결합니다.

    NAT (Network Address Translation)

    패킷이 트래픽 라우팅 장치를 통해 전송되는 동안, 패킷의 주소를 변경, IP주소를 다른 IP 주소로 매핑하는 방법입니다.