본문 바로가기

# Development

(39)
[CI/CD] CI/CD란 무엇인가? CI/CD란 무엇인가? 소프트웨어 개발 및 배포를 자동화하여 효율적으로 개발 및 배포 프로세스를 관리하는 방법론이다. CI (Continuous Integration) Continuous Integration: 지속적 통합 CI는 개발자들이 코드를 공유하는 과정에서 자동으로 코드 변경사항을 빌드, 테스트, 통합하는 프로세스를 의미한다. 개발자들이 코드를 수정하고 Github과 같은 버전 관리 시스템에 푸시하면, CI 서버가 이를 자동으로 감지하여 해당 코드를 빌드하고, 테스트를 실행하여 기존 코드와 통합하는 방법이다. 해당 프로세스를 통해 빠르게 코드를 통합하고, 충돌과 오류를 검출할 수 있다. 주요 특징 코드 통합 CI는 여러 개발자들이 동시에 개발하는 경우에도 각자 작성한 코드를 자주 통합하도록 장려..
[Nginx] 같은 도메인에 다른 어플리케이션(WAS) 연결: location 추가하기 같은 도메인에 다른 어플리케이션(WAS) 연결: location 추가하기 운영하고 있는 AWS EC2 인스턴스에 Flask 백엔드(어플리케이션A)가 돌아가고 있었는데, 동일한 도메인에 크롤링용 Flask 백엔드(어플리케이션B)를 하나 더 추가했다. 간단한 설정인데 본인은 삽질을 오래해서 다른 사람들은 편히 설정하길 바라는 염원을 담아 글을 썼다. 결론부터 얘기하자면, systemd에 추가하려는 어플리케이션B 등록한 다음, 기존에 돌아가고 있는 어플리케이션A의 nginx 설정 파일에 location을 추가해주면 된다. systemd 서비스 등록 우선 아래 글을 참조해서 새로 추가하고자 하는 어플리케이션B를 nginx 설정 전까지(git clone - python 가상환경 어플리케이션 설정 - uWSGI 설..
[Nginx] Ubuntu Nginx SSL 인증서 설정하기 (HTTPS 연결) Ubuntu Nginx SSL 인증서 설정하기 (HTTPS 연결) SSL 인증서란? SSL에 관한 설명은 아래의 글로 대체한다. [Network] HTTP, HTTPS 어떤 차이가 있지? HTTP, HTTPS 어떤 차이가 있지? HTTP(HyperText Transfer Protocol) 하이퍼 텍스트 전송 프로토콜(HyperText Transfer Protocol)의 약자로 웹에서 정보를 주고 받을 수 있는 프로토콜이다. 주로 HTML 문서를 주고 받는데 yoon001.tistory.com Ubuntu Nginx 환경에 SSL을 적용하기 위해서는 SSL인증서를 받은뒤, Nginx 환경 설정 파일에 SSL 정보를 추가해주면 된다. 환경설정 파일 위치는 Ubuntu에 기본 설정된 버전(1.18.0)으로 a..
[Nginx] Header Server 정보 수정하기, 지우기 Header Server 정보 수정하기, 감추기 Nginx를 사용하는 ununtu 서버에서 보안을 위해 Header의 Server 정보를 숨기고 싶을 때, 아래의 3가지 방법을 통해 Server 정보를 단계적으로 숨길 수 있다. 1. nginx 버전 정보 숨기기 2. Server 데이터 대체 하기 3. Server 헤더 삭제하기 nginx.conf 기본 설정 확인 Server Header 정보는 nginx.conf 파일에서를 수정할 수 있다. 보통 ubuntu에서 /etc/nginx/nginx.conf 위치에 있다. nginx.conf 기본 설정 user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/ngi..
[nGrinder] 성능테스트: nGrinder 설치하기, 사용하기 nGrinder 설치하기, 사용하기: API 성능 테스트 nGrinder란? 서버의 부하 테스트를 위한 도구이다. 웹 애플리케이션을 서비스하기 전에 서버가 얼마나 많은 사용자를 수용할 수 있는지 요청을 전송해봄으로써 서버의 성능을 측정해볼 수 있다. nGrinder는 Controller와 Agent로 이루어져 있다. Controller 웹 기반의 GUI 시스템 테스트 전반적인 작업이 이 Controller 에 의해서 작동 Agent Controller 의 명령어를 받음 Target 머신에 프로세스와 스레드를 실행시켜 부하를 발생 시킴 복수의 머신에 설치되어서 Controller 의 신호에 따라서 일시에 부하를 발생 시킴 Target 테스트를 하기위한 타겟 머신 테스트를 하려는 서버를 의미함 nGrinde..
[REST API] API 문서 작성 API 문서 작성 API 문서란? API 문서는 개발자와 사용자가 원활하게 API를 파악하고 사용할 수 있도록 돕는 문서다. API의 기능, 데이터 형석, 사용 방법, 오류와 같이 API를 사용하기 위해서 알아야하는 제약들을 명시한다. 좋은 내부 API에 문서는 개발이 원활히 진행될 수 있도록 도와준다. 고려해야 하는 사항 1. 출력 형식이 바뀌어도 쉽게 적응할 수 있어야 한다. 2. 작성하는 사람이 뭘 써야 하는지 쉽게 알 수 있어야 한다. 작성 방법 개발 시작 전 각 API의 기능, 이를 위해 사전에 필요한 사항, 주고받을 데이터 등이 포함된 API 문서 초안을 작성한다. 이를 통해 API 개발의 방향을 명확히 할 수 있으며, 문서 초안 공유 후 피드백을 받을 수도 있다. 포함되어야 하는 항목 개요 ..
[Flask] Slack Bot 으로 서비스 장애 알림 받기 Slack Bot으로 서비스 장애 알림 받기 에러 핸들링을 할 때 예측이 불가능한 에러는 회사 내 채널(이메일, 슬랙)에 공지해 주어야 한다. 에러 케이스를 확인하고 관리하는 측면에서 Slack이 편할 것 같아 시스템에 장애가 발생할 경우 Slack으로 알림이 오도록 Slack Bot을 만들었다. Slack App 만들기 https://api.slack.com/app 에서 Slack App을 생성 할 수 있다. 1) Create New App 2) From scratch 선택 3) App 이름 입력, App을 사용할 워크스페이스 선택 4) Scopes 설정 사이드바 [OAuth & Permissions]을 클릭하고 스크롤을 아래로 내리면 Scopes 섹션을 찾을 수 있다. [Add an OAuth Sco..
[Flask] python-dotenv로 개발/배포 환경 분리하기 python-dotenv 패키지로 개발/배포 환경 분리하기 개발 과정중에 환경변수를 매번 변경해주는 작업은 여간 귀찮은게 아니다. python-dotenv를 사용하면 개발 환경과 배포 환경의 환경변수를 자동으로 세팅할 수 있다. 간단한 Flask 어플리케이션을 예제를 통해 환경변수를 설정해보자. 개발환경 설정 다음과 같은 파일 구조를 가진 Flask 어플리케에션에 환경 변수를 설정해보자. . ├── myproject ├── __init__.py └── function1.py └── run.py Flask 어플리케이션이 잘 작동하는지 확인하기 위해 route에 글자를 띄우는 어플리케이션을 만들어보자. # myproject/__init__.py from flask import Flask def app(): ..