👩💻 개발
[Redis] Redis란?
Redis 오픈 소스 인메모리 데이터 구조 저장소 다양한 데이터 구조 및 크게 String, Set, Sorted Set, Hash, List 등의 데이터 형식을 지원하며 메모리에 데이터를 저장하여 빠른 데이터 액세스를 제공한다. 키-값(key-value) 쌍으로 데이터를 저장하며, 다양한 데이터 유형을 처리할 수 있다. 특징 인메모리 데이터 저장: 메모리에 저장하므로 매우 빠른 읽기 및 쓰기 성능 제공, 이는 데이터베이스나 캐시 솔루션으로서 많은 요청과 빠른 응답이 필요한 경우에 유용 다양한 데이터 유형 지원: 단순한 문자열, 리스트, 해시, 세트, 정렬된 세트 등 다양한 데이터 유형 지원, 이를 통해 다양한 데이터 구조를 효율적으로 저장하고 처리 가능 영속성: 디스크에 데이터를 저장할 수도 있어 서버..
[Nginx] Nginx란?
NGINX란? 고성능 웹 서버 소프트웨어로, HTTP, HTTPS, TCP 및 UDP 프로토콜을 지원하며, 프록시 서버, 로드 밸런서, 역방향 프록시 및 HTTP 캐시 역할을 수행하는 데 사용된다. 특징 고성능: 비동기 이벤트 기반 아키텍처를 사용하여 많은 동시 연결을 처리할 수 있고, 높은 처리량과 저지연 제공 경량화: 적은 시스템 리소스를 사용하며, 메모리 사용량이 작아 효율적인 운영 가능 확장성: 확장성이 뛰어나며, 프록시 서버나 로드 밸런서로 사용될 때 여러 대의 웹 서버를 효과적으로 관리할 수 있습니다. 리버스 프록시: 역방향 프록시 서버로 사용될 수 있어 클라이언트 요청을 웹 서버로 전달하고 응답을 반환하는 역할 수행 가능 로드 밸런싱: 로드 밸런서로 사용될 수 있어 들어오는 트래픽을 여러 대..
[Docker] 도커 컴포즈란?
1. 도커 컴포즈란? compose 란 복수 개의 컨테이너를 실행시키는 도커 애플리케이션을 정의하기 위한 툴이다. .yaml 파일을 상용하여 애플리케이션의 서비스를 구성할 수 있다. 예를 들어 서비스가 실행되기 위해서는 웹서버(Nginx, Apache)와 데이터베이스(mysql.. 등) 컨테이너를 생성해야 한다. 이때 도커로 실행하려면 매번 run 옵션을 적용하여 컨테이너를 생성해야 하는데, 도커 컴포즈는 여러 컨테이너를 하나의 서비스로 묶어 다룰 수 있는 환경을 제공한다. version: "3" services: #container_name echo: # docker_image image: example/echo:latest ports: - 9000:8080 docker-compose.yaml은 위와 ..
[Docker] 도커란 무엇인가?
1. 도커란? Go언어로 작성된 리눅스 컨테이너 기반으로 하는 오픈소스 가상화 플랫폼이다. 다시 말해 특정한 서비스를 패키징하고 배포하는데 유용한 오픈소스 프로그램이다. 컨테이너에는 라이브러리, 시스템 도구, 코드, 런타임 등 소프트웨어를 실행하는데 필요한 모든 것이 포함되어 있다. 가상 머신에 비해 꼭 필요한 것만 담겨서 구동되기 때문에 이미지를 만들 경우 용량이 대폭 줄어들게 된다. 도커를 왜 사용할까? 1. 애플리케이션 독립성을 가진다. 호스트 OS, 다른 컨테이너와도 독립된 공간을 보장받아 충돌이 발생하지 않는다. 2. 컨테이너 내부에 작업 후 배포하려 한다면 도커 이미지로 만들어서 운영서버에 전달만 하면 된다. 3. 마이크로 서비스 구조로 변화가 쉽다. 컨테이너 하나당 하나의 기능을 제공하는 모..
[Django] dj-rest-auth Custom
후딱 개발하고자 필자는 dj-rest-auth를 사용하였다! 필요한 필드를 추가 및 제거하기 위해 필자는 custom을 해줬다! 1. Register 필드 추가 회원 가입 시 필드를 추가해 줘야 했다. (필수 필드) # api/serializers.py class RegisterCustomSerializer(RegisterSerializer): # 기본 설정 필드: username, password, email # 추가 설정 필드: team, part team = serializers.CharField() part = serializers.CharField() def get_cleaned_data(self): data = super().get_cleaned_data() data['team'] = self..