일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Django
- hard delete
- 계정 관리
- hive
- nginx
- 로그 백업
- elasticsearch
- AWS
- 티스토리챌린지
- 오블완
- NoSQL
- node exporter
- grafana
- aws ec2
- JWT
- slack
- prometheus
- DAG
- 물리삭제
- docker
- 논리삭제
- unique constraint
- Airflow
- Hadoop
- Locust
- ci/cd
- soft delete
- logstash
- redis
- Next.js
- Today
- Total
목록전체 글 (19)
먹수의 개발일지
Redis란? 메모리 기반 데이터 저장소이다. 데이터를 메모리에 저장하기 때문에 매우 빠른 속도로 데이터에 접근할 수 있다.유연한 데이터 구조: 문자열, 리스트, 해시, 셋(set), 정렬된 셋(sorted set) 등 다양한 데이터 구조를 지원퍼시스턴스: 메모리 기반이지만 데이터를 디스크에 저장하여 장애 발생 시 데이터 복구가 가능확장성: 클러스터링 기능을 통해 대규모 트래픽에도 대응 가능✅ 언제 사용In-Memory 데이터베이스의 하나로, 유실되어도 괜찮지만 빠른 데이터 조회를 할 때 사용한다. 기존 관계형 데이터베이스(MySQL, PostgreSQL)보다 훨씬 빠른 이유는 메모리 접근이 디스크 접근보다 빠르기 때문이다.✅ 단점1) 디스크 즉, 파일이 아닌 메모리상에 데이터를 저장함. but 프로세..
Intro서비스를 운영할 때 부하테스트를 통해 성능 이슈를 대비하는 것이 중요하다. 간단한 부하테스트 예제를 살펴보자! Locust란?Locust는 Python 기반의 부하 테스트 도구로, 여러 사용자의 API 요청을 시뮬레이션해 서버의 성능을 측정할 수 있다. 특히 Locust는 코드로 테스트 시나리오를 작성할 수 있어 재사용성이 높고 유연한 구성이 가능하다. Locust 설치먼저 Locust를 설치한다. pip install locust locust.py 파일을 작성한다. HttpUser: Locust에서 사용자 행동을 정의하는 기본 클래스로, HttpUser 클래스를 상속받아 Django API 서버에 HTTP 요청을 보낼 수 있다.wait_time: 각 사용자의 요청 간격을 설정하는 속성이다. ..
Logstash → ElasticSearch 데이터 플로우로그 파일 생성:애플리케이션(Nginx, Django 등)이 로그 파일을 생성한다.예: service.log 파일에 JSON 형식으로 로그가 기록됨.Logstash 입력 단계 (Input):Logstash가 로그 파일을 모니터링한다.로그 파일이 업데이트되면 데이터를 읽어온다.Input Plugin: file, tcp, http 등 다양한 입력 소스를 지원한다.Logstash 필터링 단계 (Filter):읽어온 데이터를 정제하고 가공한다.예: 로그에서 불필요한 필드를 제거하거나, 새로운 필드를 추가한다.Filter Plugin: grok, mutate, date 등을 사용해 데이터 처리.Logstash 출력 단계 (Output):처리된 데이터를 El..
airflow 계정 리스트 조회airflow users list 계정 생성하기-r : 역할 종류는 아래에 맞게 선택하면 된다. RolePermissionAdminUser 추가 및 권한 부여, 취소를 포함한 모든 권한 (관리자)User뷰어와 동일하지만 DAG에 대한 편집 권한(지우기, 트리거, 일시 중지 등)이 존재 (개발자)Op사용자와 동일하지만 연결, 풀, 변수, XCom 및 구성을 보고 편집할 수 있는 추가 권한ViewerDAG에 대한 읽기 액세스Public권한 없음 airflow users create -f [이름] -l [성] -u [아이디] -e [이메일] -r Admin -p [비밀번호] 계정 삭제하기airflow users delete --email {e_mail} --username {..
개발 환경- OS: Ubuntu- Hadoop 설치되어 있는 name node docker containerHive 설치hadoop 3.3.6과 호환되는 hive 3.1.3을 설치해준다.https://downloads.apache.org/hive/wget tar -xvzf 파일명.tar.gz hive가 설치된 경로를 HIVE_HOME 환경변수로 지정export HIVE_HOME=/home/hive/apache-hive-3.1.3-binexport PATH=$HIVE_HOME/bin:$PATHsource ~/.bashrc Hadoop 경로 지정은 필수다.export HADOOP_HOME=/opt/hadoopexport HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoopexport PA..
웹 서버 보안 체크 사이트https://observatory.mozilla.org/https://securityheaders.com/ → 요청한 서버의 헤더 정보를 더 잘 보여준다. 웹서버 보안 체크리스트HTTPS 사용: SSL 인증서를 구매하거나 무료로 얻어서 HTTPS를 사용하는 것이 중요합니다. 이를 통해 데이터의 암호화와 통신의 보안성을 강화할 수 있습니다. Nginx 설정에서 SSL을 활성화하고 HTTPS로 트래픽을 전송하도록 설정해야 합니다.CSRF(Cross-Site Request Forgery) 방어: Django에서는 기본적으로 CSRF 보호 기능을 제공합니다. 이를 활성화하여 웹 어플리케이션의 사용자 세션을 보호할 수 있습니다.CORS(Cross-Origin Resource Shari..
Intro서버에 남겨지는 로그 파일들을 주기적인 배치작업으로 S3에 백업하고자 했다. 간단하게 linux 환경에서 사용할 수 있는 crontab을 사용했다. 로그 작성할때마다 S3에 보내는것 보다는, 서버에 바로 로그를 남기고 몇일에 한번씩 해당 파일들을 백업해서 옮기는 것이 운영서버에 성능 부하를 덜 발생시킬 것이라고 생각했다. 서버 환경 - AWS amazon linux2 EC2 우선 수동으로 python으로 작성한 backupLog 파일을 실행해본다. sudo python /home/path/backupLog_to_s3.py 백업 파일은 직접 구현한, S3 API를 사용하여 파일을 저장하는 StorageS3 모듈을 사용한다.# -*- coding: utf-8 -*-from core.s3 import..
pcap파일로 네트워크 패킷을 저장해보자. 로컬에서는 wireshark라는 GUI로 패킷 수집 및 저장이 가능한 툴을 사용했다. 하지만 서비스를 운영중인 AWS EC2 환경에서 네트워크 패킷을 저장하는 것이 필요했다. 여러 툴 중에 tcpdump가 시스템 리소스를 적게 사용하여 서버 성능에 미치는 영향을 최소화 할 수 있다고 하여 tcpdump를 사용하기로 했다. 서버 환경Amazon linux2 tcpdump 설치sudo yum install tcpdump sudo tcpdump -i eth0 -w /path/to/file.pcap sudo tcpdump -i eth0 /home/ec2-user/temp_pcap/test.pcap tcpdump로 pcap 파일 읽기 tcpdump는 pcap 파일을 사람..
Spark 구성요소와 아키텍쳐SparkSession의 생성master과 appName을 필수로 지정해서 사용해보자local[1]에 숫자는 core 개수이며, 로컬에서 띄울때는 local로 지정해야한다. 그 외에 리소스 매니저(yarn, mesos, kubernetes 등)를 지정할 수 있다.val spark = SparkSession.builder() .master("local[1]") // yarn, mesos available .appName("SparkExamples") //UI에서 이름을 찾을 수 있다. .config("spark.sql.warehouse.dir", "/spark-warehouse") .enableHiveSupport() .getOrCreate(); s..
IntroKafka는 비동기 방식의 대표 스트리밍 플랫폼이다.Kafka는 언제 왜 사용하는가?빠른 데이터 수집 및 높은 처리량이벤트 처리 순서가 보장된다.적어도 한 번 전송 방식 → 메시지의 유실이 없도록 한다.producer → broker 메시지 전송broker → producer 메시지 잘 받았다고 ack 전달producer ack 받게 되면 다음 메시지 전달하고 받지 못하면 해당 메시지를 재 전송함 토픽 리스트 출력kafka-topics.sh --list --bootstrap-server Kafka01Service:9092test라는 토픽 생성하기kafka-topics.sh --create --bootstrap-server Kafka01Service:9092 --replication-factor ..