오도원입니다.

건강과 행복을 위하여

반응형

전체 글 305

[Python] 파이썬 Zappa로 flask web app을 AWS Lambda에 서버리스로 구현하기

반드시 알아가야 할 것 1. AWS Lambda 2. 서버리스 3. zappa 4. 파이썬 가상환경 설정하기 5. AWS 액세스 키 생성 후 AWS configure zappa는 파이썬 3.6 이상에서만 동작하므로 반드시 파이썬 3.6 이상인지 확인하라. $ python --version 목차 1. AWS 가입하기 2. 보안 자격 증명 3. AWS CLI2 설치 4. AWS configure 5. 파이썬 가상환경 생성 및 실행 6. 모듈설치 7. 앱 생성 및 실행 8. zappa init 9. zappa deploy dev 10. zappa update 11. zappa undeploy dev 1. AWS 가입하기 goddaehee.tistory.com/175 [AWS] 2.AWS 회원가입 따라하기 [A..

Development/Python 2020.10.13

[Django] 에러 : object has no attribute 'update'

장고로 개발하다가 이러한 문제가 발생했다. Exception Value: 'Student' object has no attribute 'update' ...생략... this_student = Student.objects.get( No=request.data['No'] ) this_student.update( Stduent_No=request.data['Stduent_No'], Phone=this_phone, UpdateTime=request.data['UpdateTime'], Current_Num=request.data['Current_Num'], ) ...생략... 원인. 이유는 즉슨, .get()은 individual object, 딱 하나의 객체를 반환한다. 그러나 .update()는 오직 que..

Development/Django 2020.10.08

[Python] 내장함수 id()

id(object)는 객체를 입력받아 객체의 고유 주소 값(레퍼런스)을 돌려주는 함수이다. >>> a = 3 >>> id(3) 140709757886928 >>> id(a) 140709757886928 >>> b = a >>> id(b) 140709757886928 위 예의 3, a, b는 고유 주소 값이 모두 140709757886928이다. 즉 3, a, b가 모두 같은 객체를 가리키고 있다는 것이다. 만약 id(4)라고 입력하면 4는 3, a, b와 다른 객체이므로 당연히 다른 고유 주소 값이 출력된다. >>> id(4) 140709757886960 참고. wikidocs.net/32#id

Development/Python 2020.10.06

(Python) if __name__ == "__main__"이란 무엇인가

파이썬 개발을 하다보면 다음과 같은 코드를 자주 본다. if __name__ == "__main__" 위 코드를 그대로 해석하면 "__name__ 이라는 변수의 값이 __main__이라면 다음 코드를 실행하라" 라는 뜻이다. 이 코드를 이해하기 위해서는 파이썬의 코드 실행방식과 __name__ 내장변수를 알아야한다. 1. 파이썬의 코드 실행 방식 C계열 언어 또는 자바와 같은 프로그래밍 언어에서는 항상 main()함수를 시작으로 프로그램을 실행시킨다. 하지만 파이썬은 main함수가 존재하지 않는다. 그렇다면 어떤 방식으로 코드를 실행시킬까? 파이썬은 크게 두 가지 특징을 가진다. 1. 들여쓰기를 통해 코드 실행의 레벨을 결정한다. 2. main이 존재하지 않는다. #include int sum(int n..

Development/Python 2020.10.06

(Django) 테이블 초기화하기; reset table

장고 개발을 진행하다가 테이블명을 잘못 적어서 테이블명을 다시 적고 마이그레이션을 했는데 id값이 엉켜서 이도저도 못하는 상황에 직면했다. 그래서 마이그레이션 파일을 삭제해서 테이블을 초기화하고자 했다. 1. 마이그레이션 파일 삭제 마이그레이션 디렉토리(migrations) 안에 __init__.py 모듈 제외한 모든 파일을 전부 지운다. find . -path "*/migrations/*.py" -not -name "__init__.py" -delete find . -path "*/migrations/*.pyc" -delete 2. 데이터베이스 제거 dp.sqlite3파일을 삭제한다. 다른 DB엔진을 사용한다면 해당 데이터베이스를 삭제한다. 3. 새 스키마 생성 python manage.py makem..

Development/Django 2020.09.14

(Django) QuerySet과 객체 접근방식

1. QuerySet이란. QuerySet은 데이터베이스에서 전달받은 객체들의 list이다. 각 객체들은 DB에서 하나의 record(row)에 해당한다. Python으로 작성한 코드가 SQL로 mapping되어 QuerySet이라는 자료 형태로 값이 넘어온다. ORM 코드가 객체를 불러오지만 실제 DB에 쿼리가 이루어지는 것은 아니다. QuerySet의 lazy한 특성으로 인해 실제 데이터를 가져오기 위해서는 iterate시켜야한다. 2. 객체 접근방식 DB는 column(field)와 row(record)에 데이터가 저장된다. Django에서 필드에 해당하는 부분은 모델의 각 클래스 안에서 지정해준 속성들이다. 레코드에 해당하는 부분은 각 속성에 부여되는 값들이다. 테이블의 레코드마다 dictiona..

Development/Django 2020.09.08

Python. 깊은 복사와 얕은 복사; deep copy & shallow copy

1. 얕은 복사(shallow copy) a = {'name' : 'Kim', 'age' : 18} b = a b['name'] = 'Choi' print('b:', b) print('a:', a) 바로 할당을 할 시 얕은복사가 일어난다. ==로는 deep copy와 shallow copy를 구분할 수 없다. is함수를 써야 완전히 같은지 비교할 수 있다. is의 리턴값이 True일 경우 완전히 같은 값이다. 2. 깊은 복사(Deep copy) 1) import copy import copy a = {'name' : 'Kim', 'age' : 18} c = copy.deepcopy(a) c['name'] = 'Choi' print('c:', c) print('a:', a) 2) import json im..

Development/Python 2020.09.08

Database와 Storage의 차이점

1. 차이점1 : Physical vs Logical 스토리지는 파일 또는 물리적 저장소이 객체 스토리가 될 수 있다. 데이터베이스는 조직화된 데이터가 저장된 논리적 저장소이다. 2. 차이점2 : 관계 데이터베이스는 일종의 스토리지이다. 3. 차이점3: 저장 데이터 종류 스토리지는 텍스트파일, 이미지, 영상 등 다양한 종류의 데이터가 저장될 수 있다. 데이터베이스는 ID, record, 거래정보와 같은 구조적 또는 반구조적 데이터가 저장된다. 정리 스토리지는 파일이 담긴다. DB는 nosql을 차치하고 일반적으로 2차원 데이터 형태인 컬럼(column, field)와 로우(row, record)로 구성되는 테이블형 데이터가 담긴다. 즉, 스토리지는 파일형태가 되면 무엇이든 담을 수 있지만 DB에 담기 위..

Amazon EC2란 무엇인가

Amazon Elastic Compute Cloud(Amazon EC2) EC2는 AWS 클라우드에서 제공하는 확장식 컴퓨팅 웹 서비스이다. Amazon EC2의 간단한 웹 서비스 인터페이스를 통해 간편하게 필요한 용량을 얻고 구성할 수 있다. 컴퓨팅 리소스에 대한 포괄적인 제어권을 제공하며, Amazon의 컴퓨팅 환경에서 실행할 수 있다. 가상 서버를 구축하고 보안 및 네트워크 구성과 스토리지 관리가 가능하다. 요구사항이나 갑작스런 인기 증대 등 변동사항에 따라 신속하게 규모를 확장하거나 축소할 수 있어 서버 트래픽 예측 필요성이 줄어든다. 기능 인스턴스 : 가상 컴퓨팅 환경 Amazon Machine Image(AMI) : 서버에 필요한 운영체제(OS)와 여러 소프트웨어들이 구성된 상태로 제공되는 템..

데브옵스 2020.09.04

Amazon VPC란 무엇인가

Amazon Vritual Private Cloud(Amazon VPC) 사용자가 정의한 가상 네트워크로 AWS 리소스를 시작할 수 있다. 이 가상 네트워크는 확장 가능한 인프라를 사용한다는 이점을 가진다. 고객의 자체 데이터 센터에서 운영하는 기존 네트워크와 매우 유사하다. 개념 Amazon VPC는 Amazon EC2의 네트워킹 계층이다. 사용자의 AWS 계정 전용 가상 네트워크이다. 서브넷 : VPC의 IP 주소 범위 라우팅 테이블 : 네트워크 트래픽을 전달할 위치를 결정하는데 사용되는 라우팅 규칙 집합 인터넷 게이트웨이 : VPC의 리소스와 인터넷 간의 통신을 활성화하기 위해 VPC에 연결하는 게이트웨이

데브옵스 2020.09.04

ORM이란 무엇인가

ORM (Object Relational Mapping, 객체 관계 매핑) ORM은 데이터베이스와 객체 지향 프로그래밍 언어 간의 호환되지 않는 데이터를 변환하는 프로그래밍 기법이다. 객체 지향 언어에서 사용하는 '가상' 객체 데이터베이스를 구축하는 방법이다. 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)한다. 관계형 데이터베이스에서의 테이블은 객체 지향 언어에서의 클래스을 사용한다. 관계형 모델과 객체 모델간에 불일치가 존재한다. ORM을 통해 객체 간의 관계를 바탕으로 SQL을 자동 생성하여 불일치를 해결한다. 객체를 통해 간접적으로 데이터베이스의 데이터를 다룬다.

Amazon S3란 무엇인가

Amazon Simple Storage Service (Amazon S3) AWS에서 제공하는 온라인 스토리지 웹 서비스이다. 업계 최고의 확장성, 데이터 가용성, 보안과 성능을 제공하는 객체 스토리지 서비스이다. 규모, 산업에 관계없이 S3를 사용하여 웹 사이트, 모바일 애플리케이션, 백업 및 복원, 아카이브, 엔터프라이즈 애플리케이션, IoT 디바이스, 빅데이터 분석 등과 같은 다양한 사례에서 원하는 만큼의 데이터를 저장하고 보호할 수 있다. Amazon S3는 사용하기 쉬운 관리 기능을 제공하여 특정 비즈니스, 조직 및 규정 준수 요구 사항에 따라 데이터를 조직화하고 세부적인 엑세스 제어를 구성할 수 있다. 또한 S3는 99.999999999%(eleven nines)의 내구성을 제공하도록 설계되었..

데브옵스 2020.09.03

PNU DSC. 20년도 2학기 멤버 모집계획 회의록

목차 1. 일반멤버 모집 2. 코어멤버 선별 3. 모집 스케줄 4. 모집 폼 5. 면접 6. 출결 시스템 7. 부장 8. 코어멤버 정기회의 9. 주활동 1. 일반멤버 모집 1) 계획 인원 : 현재 인원 21명에서 추가로 11명을 더 뽑아서 총 32명 계획 날짜 : 9/4(금, 12시) ~ 9/11(금, 18시) 홍보플랫폼 : 에브리타임, 마이피누 모집방식 : 1차선별(서류), 2차선별(면접) 학교 : 부산대학교 2) 역할 분담 모집 공고작성 : 곽혜원 (~9/4, 12시) 모집 폼작성 : 오도원(~9/4, 12시) 모집 공고 : 김동근(9/4, 12시) 3) 특이사항 추천 : 현 코어멤버 인당 2명 서류통과 2. 코어멤버 선별 1) 계획 일반 멤버와 동시에 뽑으며 코어멤버 지원 체크란 추가 필수 역량 :..

PNU DSC 2020.09.03

windows 환경에서 zappa 설치 에러 해결법(UnicodeDecodeError)

AWS lambda를 이용한 서버리스 실습을 위해 zappa를 설치할 때 에러가 발생했다. windows OS는 default encoding code가 CP949로 설정되어있으므로 kappa를 설치할 때 인코딩 문제가 발생한다. kappa 0.6.0 버전 이후로는 encoding를 설정해주지 않기 때문이다. 해결방법 1. kappa(0.6.0) 수동설치 kappa를 수동으로 설치하고 setup.py파일에 encoding='utf-8'을 추가하는 것이다. 2. Windows WSL2 이용 windows의 문제이므로 linux에서 설치하는 것이다. 바로 WSL2를 이용하는 것이다. 본인은 이 방법으로 문제를 해결했다. WSL2(Windows Subsystem for Linux 2)는 윈도우즈에서 리눅스 명..

Development 2020.09.02

서버리스란 무엇인가.

서버를 고려하지 않고 애플리케이션을 구축 및 실행하는 아키텍처 *서버가 없는 것이 아니라 서버를 고려하지 않는 것이다. 1. 서버리스(Serverless)란 무엇인가. 서버리스는 운영상의 책임을 AWS(또는 퍼블릭 클라우드 서비스)로 전가하여 민첩성과 혁신을 높이는 클라우드의 네이티브 아키텍처이다. 서버리스를 사용하면 서버를 고려하지 않고 애플리케이션과 서비스를 구축하고 실행할 수 있다. 서버 또는 클러스터 프로비저닝, 패치 적용, OS 유지관리 및 용량 프로비저닝과 같은 인프라 관리 작업을 덜어낸다. AWS 개발문서에 따르면 거의 모든 유형의 애플리케이션 또는 백엔드 서비스를 서버리스로 구축할 수 있으며, 애플리케이션을 고강용성으로 실행하고 확장하는데 필요한 모든 사항이 자동으로 처리된다. 2. 서버리..

데브옵스 2020.09.02

프로비저닝(provisioning)이란

1. 정의 프로비저닝(provisioning)은 사용자의 요구에 맞게 시스템 자원을 할당, 배치, 배포해 두었다가 필요 시 시스템을 즉시 사용할 수 있는 상태로 미리 준비해 두는 것을 말한다. 2. 예시 서버 자원 프로비저닝, OS 프로비저닝, 소프트웨어 프로비저닝, 스토리지 프로비저닝, 계정 프로비저닝 등이 있다. 수동으로 처리하는 '수동 프로비저닝'과 자동화 툴을 이용해 처리하는 '자동 프로비저닝'이 있다. 출처. https://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9C%EB%B9%84%EC%A0%80%EB%8B%9D

컴퓨터공학/웹 2020.09.02

파이썬 Zappa로 AWS Lambda에 서버리스 Web 구현하기

* 다음 내용은 Hidekuma님의 파이썬 Zappa로 AWS Lambda에 서버리스 Web 구현하기를 참고했습니다. 목차 1. AWS credentials file 설정 및 Access Key ID와 Secret Access Key 생성 2. AWS CLI version2 설치 3. aws configure 설정 4. zappa 배포하기 1. AWS credential file 설정 Amazon Web Services(AWS) 계정을 처음 생성하는 경우에는 전체 AWS 서비스 및 계정 리소스에 대해 완전한 액세스 권한을 지닌 단일 로그인 자격 증명으로 시작한다. 이 자격증명을 AWS 계정 루트 사용자라고 한다. zappa 배포를 위해서는 aws configure을 설정해야한다. 따라서 엑세스 키를 생성..

데브옵스 2020.09.02
반응형