본문 바로가기

Docker 시작하기 도커 사이트 https://www.docker.com/ 도커 허브 사이트 https://hub.docker.com/ 인증된 이미지들 찾기 https://hub.docker.com/search?certification_status=certified&type=image 가상 머신과는 다르게 도커는 os를 새로 띄우지 않고 프로세스를 격리한다. os를 통째로 설치하는 것보다 용량이 준다. 이미지 : 실행 파일, 라이브러리 조합된 이미지 컨테이너 : 이미지 기반으로 실행된 것 도커 이미지 목록 확인 docker images 설치할 수 있는 우분투 이미지 목록 확인 docker search ubuntu 우분투 이미지 설치 docker pull ubuntu:14.04 컨테이너 생성과 실행 그리고 접속 docker ..
Flask Application Context 애플리케이션 컨텍스트는 요청, CLI 명령 중 애플리케이션 레벨 데이터를 추적한다. 각 함수에 애플리케이션을 전달하는 대신 current_app, g 프록시가 대신 접근된다. 요청 중 요청 레벨 데이터를 추적하는 요청 컨텍스트와 유사하다. 요청 컨텍스트가 푸시되면 같은 애플리케이션 컨텍스트가 푸시된다. 컨텍스트의 목적 플라스크 애플리케이션 객체는 뷰, CLI 명령 내에서 접근하기 유용한 config라는 속성을 갖는다. 그러나 프로젝트 모듈 내에 app 인스턴스를 임포트하는 것은 순환 참조 문제가 발생하기 쉽다. 앱 팩토리 패턴을 사용하거나, 재사용 가능한 blueprint, 확장 프로그램을 작성할 때 앱 인스턴스를 임포트할 필요가 없다. 플라스크는 이 문제를 애플리케이션 컨텍스트로 해결했다. app을 바..
플라스크 서버 동작 원리 from flask import Flask # Flask 모듈을 import하고 Flask 웹 서버를 생성한다. app = Flask(__name__) # __name__은 현재 파일을 의미함. main.py가 된다. app이라고 하는 Flask 인스턴스를 생성한다. 새로운 웹 앱이 생성된다. @app.route("/") # default 페이지 def home(): # 사용자가 default 페이지로 접속하면 home()이 실행됨. return "Hello, World!" if __name__ == "__main__": # 파이썬 스크립트가 실행될 때 파이썬은 __main__을 스크립트에 할당한다. app.run(debug=True) # 앱 실행 FLASK_APP=main.py flask run fla..
python static method, class method 공통점 static method, class method는 둘 다 정적 메서드이다 둘 다 인스턴스를 생성하지 않고 class의 메서드를 바로 실행할 수 있다는 것이다. 인스턴스 없이 클래스의 속성에 접근할 수 있게 해준다. 차이점 class method 사용 시 cls 인자가 추가된다. cls란? 클래스를 가리킴. 클래스의 속성에 접근할 수 있게 해줌. @staticmethod class hello: num = 10 #@staticmethod def calc(x): return x + hello.num print(hello.calc(10)) class hello: num = 10 @staticmethod def calc(x): return x + hello.num print(hello.calc(10)) ..
데코레이터 데코레이터라는 명칭의 모호성. 사실 데코레이터는 구문 트리를 파싱하고 애너테이션하는 컴파일러 분야에서의 용법과 관련이 더 깊다. 함수 데코레이터는 소스 코드에 있는 함수를 '표시'해서 함수의 작동을 개선할 수 있게 해준다. 데코레이터를 자유자재로 사용하려면 먼저 클로저를 알아야 한다. 자신만의 데코레이터를 구현하고자 한다면 클로저를 잘 이해해야 하며, nonlocal이 필요해진다. 클로저는 콜백을 이용한 효율적인 비동기 프로그래밍과 필요에 따라 함수형 스타일로 코딩하는 데에도 필수적이다. 목표 단순한 등록 데코레이터 복잡한 매개변수화된 데코레이터 함수 데코레이터가 정확히 어떻게 동작하는가 설명할 수 있어야 한다. 선행 지식 파이썬이 데코레이터 구문을 평가하는 방식 변수가 지역 변수인지 파이..
Kafka 카프카 사용 이유 메시지가 생성되었을 때 실시간 처리를 위해 Redis나 Memcached를 사용할 수 있다. 그러나 데이터를 메모리에 저장하기 때문에 장기간 보관하기엔 불안정하다. expired time이 지정되어 있지 않은 경우 메모리가 꽉 차면 문제가 생길 수 있다. 반면 카프카는 파일 시스템에 저장해서 안정적이다. Transaction Per Seconds가 다른 Message Queue에 비해 높다. consumer가 broker(kafka)에서 메시지를 pull하는 방식이라 consumer가 처리할 수 있는 대로 메시지를 효율적으로 처리할 수 있다. 다른 경우는 broker가 consumer에게 직접 메시지를 push하는 데 이 경우 consumer의 자원 등을 고려하지 않기 때문에 효율적이지..
SAM 환경에서 이미지 리사이징 람다 함수 사용하기 mac os에서 brew를 이용한 SAM CLI 설치 - docker, AWS CLI가 설치되어 있어야 한다. brew tap aws/tap brew install aws-sam-cli sam 버전 확인 sam --version SAM은 serverless application model의 약자. AWS에서 서버리스 앱을 만들게 해준다. 서버리스 앱은 람다 함수, 이벤트 소스 등의 조합이다. SAM 템플릿에 AWS 서비스들을 명세할 수 있고, CLI에서 빌드, 배포를 할 수 있다. 터미널에서 aws configure를 치고 aws access key id, aws secret access key 등을 입력한다. 도커 환경에서 사용해야 한다면 cd ~/ 를 치고 홈으로 진입해서 mkdir .aws로 디렉토..
파이썬 코드 예제 사이트 https://www.programcreek.com/ ProgramCreek.com www.programcreek.com https://www.programcreek.com/python ProgramCreek.com www.programcreek.com 잘 찾아보면 패키지 응용 예제가 있어서 유용하다 marchmallow, boto3 등