wanted
에서 파이썬 개발자 채용공고를 보니 원하는 기술 스텍이 있는 것을 알았다. 그래서 이대로 공부를 하면 되지않을까 싶었다.
근데 모르는 영어단어만 나왔다.(App Engine, FastAPI 등...) 💦
이 스텍들을 정리한 후, 이 기술들이 어떻게 쓰이는지 알아보기위해 검색을 했다.
회사의 클라우드 플랫폼에서 구동되는 웹 프레임워크를 말한다. 대규모 요청을 처리해야하면 여러가지 설정을 해야하는데, App Engine이 다 해주니 편리하기 때문에 사용.
Google의 infrastructure를 이용하여 원하는 웹 어플리케이션을 개발/배포/관리하는 것
Load Balncer
와 Scaling
설정은 간단한 옵션으로 관리하거나 스스로 관리해준다.Instance
가 죽었다고해도 버튼 클릭 한번이면 다시 인스턴스를 올려 자동으로 복구한다.(장애 허용정책: 장애는 일상적으로 발생하며 중요한 이슈가 아님)HTTP URL
기반 라우팅(프로세스 단위로 리소스 구분)PaaS
(완전관리형)이다보니 프레임워크를 사용할 때 제약이 생김.RDS는 EC2 인스턴스를 기반으로 운영하는 서비스
인프라 및 데이터베이스 업데이트를 관리해주는 것 뿐만 아니라 까다로운 관계형 데이터베이스의 설치, 운영 그리고 관리를 지원(PaaS
)
Amazon RDS는 현재 MySQL, Oracle, SQL Server, PostgreSQL, MariaDB, Aurora(MySQL과 호환)을 비롯한 총 6가지 데이터베이스 엔진을 지원하고 있습니다.
데이터베이스 대신에 RDS를 사용하게 되면, OS 및 데이터베이스의 설치 및 관리 그리고 업데이트를 따로 할 필요가 없어짐
AWS 콘솔이나 AWS API를 통해 손쉽게 백업이나 복구(recovery)가 가능
아마존닷컴의 클라우드 컴퓨팅 플랫폼 아마존 웹 서비스의 중앙부를 이루며, 사용자가 가상 컴퓨터를 임대 받아 그 위에 자신만의 컴퓨터 애플리케이션들을 실행(컴퓨터의 하드웨어를 가상화 환경에서 제공하는 일부관리형 서비스 IaaS
)
기본적으로 데이터베이스 소프트웨어를 패치하거나 데이터베이스를 백업하거나 시점 복구를 활성화하는 것과 같은 복잡한 관리 프로세스들은 자동으로 관리가능
하지만 내가 직접 리눅스 위에 사용하려는 DB(oracle,maria db, postgresql등)를 설치하고 그위에 서비스해야함
프레임워크란? 🙄
프레임워크란, 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것(Ralph Johnson)
프레임워크는 아래와 같은 장점과 단점이 있습니다.
우선 저는 파이썬 웹 개발자가 되길 원하므로 파이썬으로 작성된 오픈 소스 웹 애플리케이션 프레임워크를 조사했습니다. 🤐
위의 사진을 보고 다 공부할 수는 없어서 full과 micro 에서 많이 사용하는 1개만 공부하기로 했습니다.
장고는 High-level Framework 입니다. 무조건 쉽고, 무조건 편하게 라는 느낌을 주는 프레임워크.
💻High-level Framework란?
프레임워크는 지속되는 문제들을 보다 쉽게 개발자들이 해결할 수 있도록 만들어진 일종에 솔루션이며, 하이레벨 프레임워크는 이런 지속되는 문제들을 해결하는데 실제적으로 거의 코딩이 필요없도록 지원해주는 프레임워크
디자인 철학은 6가지 카테고리로 수십가지 철학을 기본으로 하고 있는데, 우선 대표적인 4가지는 아래와 같습니다.
❗ Loose Coupling
프레임워크내 레이어들은 꼭 서로 알아야 하는 상황이 아니면 서로서로 알 필요가 없다.
❗ Django는 풀프레임워크지만, 그 안에 조각들은 독립적으로 작동한다.
❗ Less Code
코딩을 더 조금만 할 수 있도록
❗ Quick Development
빠르게 개발할 수 있도록
❗ Don't Repeat Yourself
코드 내용은 프로젝트 내 한 곳에만 있을 수 있도록. 프레임워크는 작은 정보에서 더 큰 것을 추론할 수 있어야 한다.
플라스크는 WSGI 프레임워크 입니다. 플라스크는 당신이 어떤 프로젝트를 만들던 그에 맞게 높은 퍼포먼스를 보여줍니다. 큰 커뮤니티를 가지고 있으며 Jinja2를 사용하여 프론트엔드 작업도 가미할 수 있습니다.
SQLAlchemy가 아니더라도 그어떤 ORM도 사용할 수 있고, 쿠키와 클라이언트 사이드 세션을 지원합니다. 유닛테스트를 지원하며 우수한 성능의 디버거가 포함되어 있습니다.
코드 몇 줄 이면 시작할 수 있습니다. Django 보다 코드가 10% 정도 밖에 안되는 가벼운 프레임워크 입니다. 꽤 쉽게 이해할 수 있고 꽤 쉽게 개발을 시작할 수 있습니다.
보안 등 세밀한 부분에 신경을 쓰지 않아도 된다면, 아마 프로토타이핑에 가장 빠른 프레임워크라고 해도 과언이 아닐정도로 빠르게 개발할 수 있습니다. 패키징된 프레임워크 안에 이미 당신이 필요한 모든 것이 들어 있습니다.
WSGI는 구조적으로 한번에 많은 트래픽을 처리하기엔 느리다는 단점이 있습니다. WSGI의 구조적 한계를 극복하기위해 Gunicorn
을 사용하지만 관리요소가 늘어나서 효율적이지 못합니다.
🙄 Gunicorn 이란?
gunicorn은 WSGI의 일종이다. 그리고 WSGI는 CGI의 일종이다.이게뭔말🤔
단순 정보의 나열뿐이었던 단방향 형태의 웹은 점점 수요가 다양해지고 당연스럽게 동적인 웹으로서의 발돋음을 하게 되는데 그 과정에서 사용자들이 입력하는 데이터를 처리할 로직이 필요했다. 이 데이터를 "공통적인 형태"로 주고받기 위해 만든 것이 바로 CGI이다.
파이썬 스크립트가 웹 서버와 통신하기 위해 만들어진 인터페이스이며 웹서버에서의 요청을 해석하여 파이썬 응용프로그램에 던지는 역할을 한다.
Apache나 nginx로 들어오는 HttpRequest를 Python이 이해할 수 있게 동시통역하여 던져주는 역할이다.
이렇게 CGI, WSGI, Gunicorn 같은 해석기와 웹서버가 함께 달려있는 어플리케이션을 WAS라고 한다.
가볍다라는 말은 개발자가 하나부터 열까지 다 해야한다는 이야기이다.
지금 하고 있는 일이 어떤일인지 정확히 아는 전문가들이 고도화를 해야 하는 프레임워크이며 주니어 개발자라면 사용하기에 애로사항이 많은 프레임워크이다.
내일은 MySQL 같은 DBMS, 비동기모듈, Jenkins 를 공부해야겠다. 🤦♂️
너무 길어...