분류 전체보기
-
[ API ] Django 비동기 ADRF 적용하기!카테고리 없음 2025. 4. 10. 00:16
지난번 큐를 도입한 API 처리에서도 한계점이 명확했다.큐를 이용하면 처리 지연을 줄이긴 했지만, 결국 API는 동기로 동작하고 있었고, 큐 작업을 넘기기까지의 지연도 무시할 수 없었다.그래서 이번엔 동기로 동작하는 API를 비동기로 전환해 보기로 결정했다. Django에서 비동기? sync_to_async vs ADRF Django에서도 sync_to_async 같은 유틸을 통해 비동기 처리를 시도할 수 있지만, 한계가 명확하다.찾아보니까 ADRF라는 비동기 View를 위한 라이브러리가 있길래 도입해보았다.ADRF는 기존 DRF 문법을 그대로 활용할 수 있으면서도, async def 기반으로 View를 작성할 수 있도록 도와준다. ########## app.py ##########from adrf.vi..
-
[API] API Queue 처리일하며 늘어가는 지식 2025. 3. 4. 09:28
시작 이번에 작성할 글은 API 관련된 게시물이다. 문제 이번에 발생한 문제는 클라이언트 단에서 파일을 업로드 할 때, 생기는 문제였다.주로, 여러개의 PDF를 동시 업로드 할 때 생겼는데, 내가 구성해둔 API의 상태가 병렬로 N개로 제한시켜 진행되도록 했는데, API 호출이 길어질때의 예외처리를 빼먹은 것, React 단에서 각 API의 의존성을 깊게 둔 것이 문제의 원인이라고 파악하였다. 이를 해결하기 위해서, 1. 의존성을 줄인다.2. API 호출의 방식을 변경한다. 여기서 의존성을 줄이기 위해서 코드 리팩토링을 진행하였다.이 때, 리팩토링을 진행하면서 코드가 되게 깔끔해졌다!?API 호출은 구글을 통하여 Queue를 도입해서 진행했다.문제 해결 기존에 발생한 문제는 OCR 요청을 비동기(Prom..
-
[AWS] amplify일하며 늘어가는 지식 2025. 1. 16. 13:57
사내 웹 앱을 개발하면서, Cognito로 로그인 연동을 좀 간편한 방법으로 하고싶어서 찾아보았다. 사내 앱을 개발하는 중 React 부분에서 Cognito랑 연동하여 로그인 + 회원가입 추가를 기존과는 다르게 간편한 방법으로 진행하고싶었다.. 찾아낸건 Amplify 라는 라이브러리를 찾게되었다. 기존엔 로그인, 회원가입 컴포넌트를 각각 만들어 연동 시키고, CSS 처리가 필요했다.다만 Amplify의 경우엔 별 다른 처리 없이 진행을 할 수 있어 편했다.(??) Amplify에 대해서 찾아보니 로그인, 회원가입 컴포넌트를 만들 필요가 없었다. 로그인의 경우 Docs를 참조하여 구성했다.import React from 'react';import { Authenticator } from '@aws-ampl..
-
[암호화] AES, RSA일하며 늘어가는 지식 2025. 1. 6. 10:53
시작 이번에 작성할 글은 암호화다. 문제 서버와 클라이언트로 분리를 하고, API로 통신을 연결하면서 데이터를 주고 받을때 노출되는 데이터가 보였다. 그래서 이 노출된 데이터를 가리기 위해서 암호화에 대해서 알아보았다. 우선, 암호화는 간단하게 정보(평문)을 특정 알고리즘이나 방법을 이용해서 변경하고, 승인된 유저만 확인할 수 있도록 변환하는 방법으로 볼 수 있다. 암호화 방법은 대칭키 암호화 방법이랑 공개키 암호화 방법이 있다.대칭키는 암호화와 복호화에 사용되는 키가 같은 암호 알고리즘 방법이고,공개키는 암호화와 복호화에 사용되는 키가 서로 다르며, 암호화에는 공개키를 복호화에는 비밀키를 이용한다. 각, 암호화 방법의 대표적인 AES 와 RSA로 데이터 암호화를 진행했다. AES란?- 대칭형, 블록 암..
-
[애플리케이션] React + Django + Nginx를 EC2에 배포! 거기에 Docker를 곁들인.. (2)일하며 늘어가는 지식 2024. 11. 25. 10:04
시작이번에 작성할 글은 지난 게시물에 이어서.. 작성하겠습니다. 저번 게시물은 장고를 대부분 API로만 사용을 했기 때문에, API와 관련된 장고 사용법만 공부를 했다. 오늘은 리액트 부분만 간단하게 정리하고, 글을 쓰다 생각나는 애들은 뭐 추가해 보도록 하겠다.학습내용 리액트는 자바스크립트 라이브러리로 SPA(Singl Page Application)나 모바일 애플리케이션에 사용이 되는데,이 애플리케이션 배포시에는 SPA로 구성하여 배포했다. 리액트를 학습하면서 컴포넌트라는 단어를 처음 듣게 되었는데, 여기서 컴포넌트는 UI를 구성하고 있는 여러 조각들을 컴포넌트라고 부른다.import React from "react";function Main({ name }) { const username = ..
-
[애플리케이션] React + Django + Nginx를 EC2에 배포! 거기에 Docker를 곁들인.. (1)일하며 늘어가는 지식 2024. 11. 17. 00:35
시작 이번에 작성할 글은 회사에서 이전에 배포했던 웹(Streamlit 기반)을 홀로 고도화를 진행하면서,배운 지식(?)들을 주로 설명하겠습니다. 에러도 많이 있었는데, 딱히 기록을 하지 않았어서 기억나는 에러들을 위주로 쓰겠습니다... 근데, 사실 고도화를 하면서 성장을 했다는 점은 인정한다.백엔드랑 프론트엔드 지식 전무했기에..문제우선 1차적 문제는 회사 규모가 작아 백엔드랑 프론트엔드를 하는 인원이 0명이다.(내가 하고있으니까 1명인가?) 그래서 일단 Streamlit으로 뼈대가 구성된 웹 페이지를 다른 분이 만들어 놓았고,내가 그걸 이어 받아서 기능, UI를 추가 및 수정하는 방식으로 기간 내에 프로젝트를 끝내었었다. 애초에 Streamlit 자체가 데이터분석을 위한 임시(?) 웹으로 주로 이용되..
-
[모니터링] 수집된 메트릭데이터 S3로 적재하기일하며 늘어가는 지식 2024. 11. 9. 21:34
시작 이전에 구성한 Prometheus + Grafana에서 원하는 메트릭데이터를 수집하고, 이를 S3에 적재를 하기 위해서 방법을 찾다가 타노스라는 툴(?)을 알게 되었다. 타노스는 Prometheus가 수집한 메트릭데이터가 장기 보관 및 다른 스토리지에 적재가 가능하도록 도와주는 도구로 볼 수 있다. 타노스 아키텍처를 보게 되면, 기존의 프로메테우스 인스턴스에 타노스 사이드카가 붙으며 사이드카는 수집한 메트릭데이터를 타노스의 Object Storage에 보낸다. 여기서, Object Storage를 S3로 타깃 하여 데이터를 전송하도록 구성했다. 타노스 룰러는 기존 프로메테우스의 알림과 경고와 유사하게 진행한다. PromQL를 이용해서 쿼리 결과를 불러온 것처럼 타노스도 PromQL로 데이터를 조회..
-
[모니터링] Prometheus + Grafana로 실시간 모니터링하기일하며 늘어가는 지식 2024. 9. 9. 11:23
오랜만에 블로그 포스팅 및 업무 관련 사용한 툴들 기록하기시작 최근에 시작한 프로젝트에서 맡은 역할이 백엔드(기능개발 + 운영 + 관리)다.. 백엔드 기능을 구현하면서 세션같은 재밌는(?)것도 공부했고, 적용도 했는데 이런건 다음에 올려야겠다. 먼저, 가장 최근에 구현한 프로메테우스 + 그라파나 도구로 실시간 리소스 데이터 수집 + 시각화를 진행했다. 간단하게, Prometheus는 애플리케이션이나 시스템의 다양한 메트릭을 수집하는 오픈소스이며, Grafana는 Prometheus와 연동해서 수집한 메트릭을 이용해 실시간 대시보드를 구축하는 도구이다. 여기서, 메트릭은 서비스, 성능, 상태등 지표를 낼 수 있는 값들을 측정할 수 있다.메트릭 이름, 메트릭 측정된 타임스탬프(시간), 측정된 메트릭 값의 정..