전체 글
-
Flask Project - MyBlog CI/CD 적용하기(feat. Github Actions)프로젝트 2024. 4. 19. 14:11
지금까지 docker-compose를 통해 배포까지 해보았습니다. 이제 CI/CD 시스템을 구축해보겠습니다. 1. 배포 자동화(CI/CD) 배포 자동화를 위해 사용하는 툴은 Jenkins, AWS CodeBuild, Github Actions 등 다양하게 존재하는데요. 보통 Jenkins와 Github Actions 툴을 많이 사용한다고 합니다. 각각을 비교해보자면 아래와 같습니다. Github Actions 장점: Github 저장소와 쉽게 연동 가능해 빠르게 CI/CD를 구축할 수 있다. 단점: 비교적 최근에 나온 툴이라 레퍼런스가 상대적으로 적다 Jenkins 장점: 레퍼런스가 많고, 다양한 플러그인들이 지원되어 유연성이 뛰어나다. 단점: 초반 설정과 관리가 다소 복잡하다. 너무 간단하게 정리한 것..
-
Flask Project - MyBlog 배포하기(nginx+gunicorn+flask with docker-compose)프로젝트 2024. 4. 18. 21:18
이번에는 지금까지 만든 프로젝트를 클라우드 서비스를 활용해서 배포해보겠습니다. 배포를 하기 전에 꼭 알아야 하는 것이 있습니다. Flask app은 대표적인 WSGI(Web Server Gateway Interface) 웹 애플리케이션 중 하나로, 배포 시 웹 서버와 WSGI 서버와 묶여서 배포됩니다. 그렇다면 웹 서버는 무엇이고, WSGI 서버는 무엇인지 알아볼까요? 1. 웹 서버 - Nginx, Apache 등웹 서버는 클라이언트로부터 HTTP 요청을 받아들이고, 정적 파일을 제공하거나 동적 요청을 처리하여 해당 요청에 대한 응답을 생성하는 소프트웨어입니다. 주로 정적 파일 서빙, 리버스 프록시, 로드 밸런싱, SSL 암호화 등의 기능을 제공합니다. 본 프로젝트에서는 리버스 프록시 역할을 위해 웹 서..
-
Flask Project - MyBlog views(post 생성,수정,삭제) with unittest프로젝트 2024. 4. 11. 19:11
지금까지 blog 메인 홈페이지(index.html)과 회원가입, 로그인, 로그아웃 기능을 구현 및 테스트까지 해보았습니다. 이제 사용자가 작성한 글을 저장하기 위한 Post 모델과, 관리자만 추가 가능한 Category 모델을 생성해보겠습니다. 그리고 Post 생성, 수정, 삭제 기능 및 테스트까지 구현해보겠습니다. 1. Post, Category 모델 생성 Post는 제목, 본문, 저자, 카테고리, 생성 날짜가 필요합니다. 여기서 제목, 본문, 카테고리는 사용자에게 직접 입력을 받을 예정이고, 저자와 생성날짜는 서버에서 직접 처리할 예정입니다. 해당 정보를 기반으로 다음 단계에서 PostForm을 생성해보겠습니다. Post model에서 가장 중요한 개념은 ForeignKey와 relationship..
-
Flask Project - MyBlog auth(회원가입, 로그인, 로그아웃) with unittest프로젝트 2024. 4. 9. 19:10
지금까지 flask-sqlalchemy를 사용해 DB 스키마 생성 후, admin 페이지를 통해 User 모델을 등록하고 관리해보았습니다. 본격적으로 웹 페이지 개발을 시작하기 전에, admin 페이지에 접근 가능한 관리자용 계정 생성을 해보겠습니다. 플라스크 애플리케이션에서 여러 기능을 테스트해보거나, DB에 접근하는 등의 작업을 할 때 가장 중요한 개념은 app_context입니다. Flask는 요청 처리 동안에만 유효한 current_app, current_user 같은 객체를 제공하는데, 이 객체에 접근하기 위해서는 애플리케이션 컨텍스트(app_context)가 필요합니다. 따라서 관리자용 계정 생성을 위해서는 with app.app_context(): 를 사용하여 데이터베이스에 접근하는 코드를 ..
-
Flask Project - MyBlog Flask-admin(관리자 페이지 생성 및 관리)프로젝트 2024. 4. 8. 22:25
Flask에서는 관리자 페이지를 생성해주는 flask-admin 라이브러리가 존재합니다. 해당 라이브러리를 활용해 관리자 페이지를 생성하고 관리해보겠습니다. 1. 관리자 페이지 생성 + 관련 환경 변수 관리(config.py) # blog/__init__.py from flask_admin import Admin from blog.admin_models import get_all_admin_models from .models import db def create_app(config): ''' 이전 코드 생략 ''' # admin 페이지에 모델뷰 추가 admin = Admin(app, name='MyBlog', template_mode='bootstrap3') for admin_model, model in..
-
Flask Project - MyBlog Flask-sqlalchemy(with Flask-migrate) DB 관리프로젝트 2024. 4. 8. 21:13
DB 관리 통합 ORM: Flask-SQLAlchemy Flask는 데이터베이스 기능이 내장되어 있지 않습니다. 따라서 적절한 데이터베이스를 선택하여 사용해야 하고, 이렇게 될 경우 프로젝트가 특정 데이터베이스에 종속될 수 있습니다. 이 때 ORM은 데이터 객체 모델과 데이터베이스를 매핑해주기 때문에, 특정 데이터베이스에 종속되지 않고 일관된 OOP 코드를 작성할 수 있게 됩니다. 파이썬 환경에서 사용할 수 있는 대표적인 ORM은 sqlalchemy가 있습니다. 그리고 Flask app에서 더 쉽게 사용가능하도록 만든 flask-sqlalchemy가 존재합니다. 따라서 저는 flask-sqlalchemy를 선택했습니다. 데이터베이스 마이그레이션: Flask-migrate 데이터베이스 마이그레이션이란 데이..
-
Flask Project - MyBlog 프로젝트 목적, 아키텍쳐, Config, gitignore 관리프로젝트 2024. 4. 8. 18:49
https://github.com/WooyoungJun/MyBlog_project GitHub - WooyoungJun/MyBlog_project Contribute to WooyoungJun/MyBlog_project development by creating an account on GitHub. github.com 프로젝트 목적 1. Flask 웹 어플리케이션 개발 2. 테스트 코드 작성 경험 쌓기 3. CI/CD 적용 +) 가능하면 Docker로 포장해서 heroku로 배포해보기 웹 개발에 대해 공부하면서, 지금까지 공부했던 내용들을 묶어서 하나의 과정으로 승화시키는 프로젝트가 필요하다고 느껴 이 프로젝트를 시작하게 되었습니다. 중간에 모르는 것은 채우고, 고민했던 부분은 공유하면서 진행하겠습니다..
-
2024 팀네이버 신입 공채 - 코딩테스트 후기취업준비 2024. 3. 23. 17:25
2024년 상반기 공채 코딩테스트(2024년 3월 23일(토) 오전 10시 - 12시)가 끝났습니다. 이번에는 작년과 다르게 2시간 동안 3문제(1문제 감소)가 나왔습니다. 코딩테스트 문제는 공유 금지라 자세한 언급은 못하지만, 그 외의 것들에 대해서 소개해드리겠습니다. 먼저 코딩테스트는 프로그래머스에서 진행되었습니다. 제한 사항 중 핵심은 아래와 같습니다. 1. 외부 IDE 사용 금지 2. 구글링, chat GPT 금지 3. 시험 속 레퍼런스만 참고 가능(자료구조나 메소드에 대해서 검색 가능. 각 언어 공식 문서 사이트느낌) 4. 화면 공유 + 핸드폰 화상 감독(모나모) 5. 간식, 음료 모두 금지 6. 화장실 금지 7. A4 한장 + 필기구 하나(볼펜 or 샤프만 가능, 지우개 불가능) 8. 테스트 ..