728x90
1.플러그인(Plugin)
기존 프로그램의 기능을 확장하거나 새로운 기능을 추가할 수 있도록 만들어진 독립적인 모듈을 의미한다.
원래 소프트웨어의 핵심 코드 변경 없이 기능을 확장이 가능한 특징을 가지고있다.
예전에 했던 마인크래프트의 플러그인을 생각해보자
플러그인은 새로운 기능들을 추가해줬지만 기본적으로 게임의 틀을 벗어나지않았었다.
즉, 소프트웨어의 핵심 기능을 건드리지 않고 확장을 할수 있도록 설계된다는거다.
2.모드
모드는 기존 소프트웨어의 동작 방식을 변경하는 설정 또는 상태다.
소프트웨어나 게임, 애플리케이션에서 기본적인 동작 방식을 변경하는 설정이나 기능 이라고 할수있다.
(개발 모드, 배포모드)
마인크래프트의 모드는 애플리케이션의 내부 구조를 변경하거나 확장하는 코드 수정을한다.
애플리케이션의 내부 API를 직접 수정하거나 확장하는 경우가 많고 마인크래프트 모드는 게임의 기본적인 코드에 접근해 새로운 아이템, 블록, 기능을 추가한다.
때문에 마인크래프트 모드는 개발자 입장에서 모드하고는 다른개념이라 볼수있다.
3.개발자 입장에서 플러그인
플러그인은 주 애플리케이션의 기능을 확장할 수 있는 독립적인 모듈로 주 애플리케이션에 의해 로드되며, 애플리케이션의 핵심 코드에 영향을 미치지 않고 추가적인 기능을 제공하여 독립적인 코드 블록이 존재한다. (모듈화)
다음은 로깅을 설정하는 기능을 수행하는 독립적인 플러그인이다.
# plugin.py
import logging
# 플러그인으로 사용할 로깅 함수
def setup_logging(app):
logging.basicConfig(level=logging.DEBUG)
app.logger = logging.getLogger("MyAppLogger")
다음 메인 코드에서보면 plugin.py 파일에서 작성된 로깅 기능은 FastAPI 애플리케이션의 핵심 코드에 의존하지 않는다.
로깅 기능을 추가한다고 해서 FastAPI의 기본적인 라우팅이나 동작 방식에 직접적인 영향을 미치지 않는다.
# main.py
from fastapi import FastAPI
import plugin
app = FastAPI()
plugin.setup_logging(app) # 로깅 플러그인 로드
@app.get("/")
def read_root():
app.logger.info("로그")
return {"message": "Hello, World!"}
4.개발자 입장에서 모드
애플리케이션이 개발 모드와 운영 모드에 따라 다르게 동작하도록 설정하는 방식의 모드 설정 파일이다.
# config.py
import os
# 'MODE' 환경 변수를 읽고, 없으면 기본값으로 'development' 설정
MODE = os.getenv("MODE", "development")
config.MODE 값에 따라 애플리케이션이 개발 모드인지 운영 모드인지 구분하고 그에 따라 로그의 레벨을 다르게 하는 코드이다.
# main.py
from fastapi import FastAPI
import logging
import config
app = FastAPI()
# 모드에 따른 로깅 설정
if config.MODE == "development":
logging.basicConfig(level=logging.DEBUG)
else:
logging.basicConfig(level=logging.WARNING)
@app.get("/")
def read_root():
app.logger.info("Root endpoint is accessed!")
return {"message": "Hello, World!"}
728x90
'Computer Science > 개발지식' 카테고리의 다른 글
[개발지식] Vendor Lock-in(벤더 락인)이란? (0) | 2025.02.18 |
---|---|
[개발지식] BaaS(Backend as a Service) (0) | 2025.02.11 |
[개발지식] DevOps란? (1) | 2025.02.11 |