Flask-Study (19) 썸네일형 리스트형 Ep16 : 모놀리식 아키텍처 / 마이크로 서비스 아키텍처 모놀리식 아키텍처 모놀리식 아키텍처는 소프트웨어 프로그램의 전통적인 모델로, 자체 포함 방식이며 다른 어플리케이션과 독립적인 통합된 유닛으로 만들어 진다. 모놀리식 아키텍처는 모든 비즈니스 관련 사항을 함께 결합하는 하나의 코드 베이스를 갖추 대규모의 단일 컴퓨팅 네트워크이다. 즉, 소프트웨어의 모든 구성요소가 한 프로젝트에 통합 되어 있는 상태이다. 장점 애플리케이션이 하나의 코드 베이스에 기반을 두어 단순하기 때문에 개발 속도가 빠르다. 실행 파일 또는 디렉토리가 하나여서 배포가 쉽다. 하나의 코드 베이스로 애플리케이션을 구축하여 개발이 더 쉽다. 대부분 하나의 API만으로 마이크로서비스에서 여러 API가 수행하는 것과 동일한 기능을 수행할 수 있다. 하나의 중앙 집중식 장치이므로 분산된 어플리케이션.. Ep16 : 비즈니스 로직 비즈니스 로직 비즈니스 로직이란 프로그램의 핵심 로직을 뜻한다. 즉, 어떻게 데이터가 생성되고 저장되고 수정되는지를 정의한 것이다. 예를 들어서 인터넷으로 물건을 구매하기 전에 장바구니에 담을 때마다 결제 금액이 변경되는 것을 볼 수 있는데 이렇게 물건이 추가되면 금액이 바뀌는것이 비즈니스 로직이다. 우리가 알고 있는 CRUD를 구현하다보면 특정 상황에 맞게 더 복잡하게 구현을 할 때가 있는데 이것도 비즈니스 로직이라고 표현할 수 있다. 여태까지 진행했던 flastagram에서 비즈니스 로직은 resource 부분이라고 할 수 있다. 아래 코드를 살펴보자 resource/post.py에 있는 게시글 수정을 구현하는 코드이다. 주석을 보면 게시글을 수정하기 위해서 데이터를 검증하고 게시글의 존재를 체크, .. Ep15 : flask 인스타그램 클론 코딩 - 댓글 수정, 삭제 기능 구현 댓글 수정 기능 댓글 수정 기능을 구현하기 위한 기본적인 뼈대는 위와 같다. 얼핏 보면 저번에 했던 게시글 수정이랑 크게 다를게 없어 보이지만 인자 부분에 post_id와 comment_id가 게시글 수정때와는 다른다는 것을 알 수있다. 왜 그런지 살펴보자 두 코드는 각각 게시글 수정,삭제 url 경로와 댓글 수정,삭제 url 경로이다. 게시글의 경우 게시글의 id를 찾아서 작성자가 맞는지 인증을 통해서 기능을 수행 했지만, 댓글의 경우 게시글에 댓글을 다는 것이기 때문에 게시글의 아이디와 댓글의 아이디 두개 다 필요하기 때문에 post_id와 comment_id로 구분해 놓은 것이다. 이를 참고해서 코드를 작성하면 아래와 같이 나온다. 게시글과 댓글의 아아디를 찾아서 게시글의 아이디가 같은지와 작성자 .. Werkzeug의 PathConverter 정규표현식 정규표현식이란 특정한 규칙을 가진 문자열의 집합을 표현하는데 사용하는 형식이다. 정규표현식 문자들은 아래와 같다. ^ : 문자열의 시작과 매치 $ : 문자열의 마지막과 매치 ^ $ : 사이에 있는 글자가 정확히 들어맞아야 함 . : 아무 글자(띄어쓰기 포함, 줄바꿈은 제외) [] : 대괄호 안에 있는 문자들 중 한글자 [a-z] : a부터 z까지 임의의 글자 | : 또는 * : 최소 0번 이상 반복 ( {0, } 과 동일) + : 최소 1번 이상 반복 ? : 0번 또는 1번 ( {0,1} 과 동일) {n} : n번 반복 Converter Converter를 사용하면 포멧의 변수를 사용하지 않고 편하게 사용할 수 있다. PathConverter 내용을 보면 경로에 사용되는 슬래쉬(/)를 포함하는.. WSGI, Werkzeug WSGI(Web Server Gateway Interface) WSGI란 웹 어플리케이션과 웹 서버간의 통신 규약으로 파이썬 언어로 작성한다. 웹 서버와 웹 어플리케이션 사이에 위치하여 서로 통신이 가능하도록 도와준다. Web Server 웹 서버는 클라이언트에서 요청을 보내면 정적인 컨텐츠(HTML, CSS, image 등)들을 보여준다. 대표적으로는 Apach, Nginx가 있다. Web Application 웹 어플리케이션에서는 웹 서버에서 처리하지 못하는 동적인 컨텐츠들을 처리해서 웹 서버에게 보내준다. 대표적으로는 Django, Flask가 있다. WSGI의 역할 기본적으로 웹 서버는 정적인 페이지 밖에 보여주지 못한다. 그렇기 때문에 웹 어플리케이션의 도움을 통해서 동적인 페이지를 보여줄 수 .. Ep13 : Flask 인스타그램 클론코딩 - 게시글 저자 삭제 구현 우선 access token괴 refresh token을 받아 와서 로그인 한 유저만 게시글 생성이 가능하고, 저자 본인만 게시글 수정이 가능하도록 구현을 했다. 자세한 방법은 아래 블로그 링크를 통해서 진행 하였다. https://gdsanadev.com/15375 이제 작성자 본인만 삭제가 가능하도록 구현을 해 볼 것이다. 우선 게시글을 수정하는 부분에서 조금만 수정하면 될 거 같다고 생각했다. resources/post.py에서 게시글 수정 코드를 살펴보자 작성자만 게시글을 수정하도록 기능을 구현한 코드이다. 토큰을 사용하기 때문에 jwt가 필요하다는 장식자인 @jwt_required()를 작성해 주고, 게시글 생성할 때 클라이언트에서 보내준 JWT를 통해서 유저 이름을 알아 낸 다음 유저 이름을 .. 오류 및 내용 정리 플라스타그램 진행을 해다가 오류가 발생했다. 오류 코드는 아래와 같다. sqlalchemy.exc.ArgumentError: relationship 'followed' expects a class or a mapper argument (received: ) followed 에는 클래스 또는 매퍼 인수가 필요하다는 의미라서 followed를 사용하는 User 모델을 확인 해 봤다. 확인을 해 보니 UserModel이 아닌 User로 적혀 있어서 오류가 난 것이었다. UserModel로 수정을 해 주니 정상적으로 작동 되었다. 진행을 하다가 포스팅이 성공적으로 이루어 지는지 확인을 하는데 글씨가 깨져 보이는 현상이 발생했다. . 과제에서는app.config.update(RESTFUL_JSON=dict(ens.. Ep10 : CORS / CSR / SSR 알아보기 CORS(Cross-Origin Resource Sharing) 서로 다른 도메인에서 리소스 요청을 주고받을 때 보안상의 이유로 주고받을 수가 없는 상황이 발생하는데 이를 해결하기 위해서 나온 것이 CORS이다. 예를 들어서 웹 브라우저와 웹 서버, 날씨 API 서버가 있을 때 웹 브라우저에서 웹 서버를 통해 날씨 API를 받아오게 되는데 이는 과정이 복잡해 바로 웹 서버에서 날씨 API를 받아오고 싶어 진다. 하지만 도메인이 다르기 때문에 받아오지 못하기 때문에 CORS를 이용하는 것이다. CORS는 간단하게 관문이라고 생각하면 된다. 가져오는 리소스들이 안전한지 확인하고 안전하다면 넘겨주는 것이다. CSR(Client Side Rendering) CSR이란 클라이언트 측에서 모든 것을 작동하는 것을 .. 이전 1 2 3 다음