전체 글(30)
-
포트 포워딩이란?
포트를 전달한다. Port란? port는 단어 뜻 그대로 항구라는 뜻이다. 항구에 서로 다른 배들이 정착하고 나가듯, 서버도 마찬가지로 이런 항구의 역할을 하는 친구가 필요하다. 그것이 바로 port이다. 하나의 서버에서는 여러 역할을 할 수가 있다. 데이터베이스를 관리할 수도 있고 다른 서버에 요청을 보낼 수도 있다. 파일을 전송할 수도 있고 굉장히 여러 기능이 존재할 수 있다. 그러나 포트가 없이 서버 IP주소로만 요청을 보내면 어떤 요청을 하는 것인지 알 수가 없다. 따라서 어디로 요청을 보내는 것인지 알려주기 위해 숫자로 포트 번호를 부여하고 해당 포트로 요청을 하게 된다. 포트의 종류는 크게 다음과 같이 3종류로 표현이 된다. 0 ~ 1023 : 잘 알려진 포트(well-known port) 잘..
2022.07.15 -
[성능 테스트] 성능테스트 기본 지식
1. 웹 시스템 가용성 가용성: 서버와 네트워크 등의 시스템이 정상적으로 사용 가능한 정도(Availability) 즉, 서비스가 다운되지 않고 정상적으로 서비스를 유지하는 것 서비스가 다운되는 이유: 네트워크 장애, 전원 장애, 하드웨어 문제, 소프트웨어 오류, 서비스 점검시간 등 2. 높은 가용성을 가지는 시스템을 설계하는 방법 서비스가 정상적으로 작동되지 않는 시간을 최대한 짧게 만든다. 시스템 확장 Scale Up/Down Scale Out/In 시스템 이중화 시스템 백업 배치 운용 (이중화, 삼중화) 멀티 클라우드 Scale-Up 기존의 서버를 보다 높은 사양으로 업그레이드하는 것을 말한다. 하나의 서버의 능력을 증강하기 때문에 수직 스케일링(vertical scaling)이라고 한다. Scal..
2022.07.04 -
[Python] os.system VS subprocess
os.system os.system 메소드는 UNIX Command와 다를 게 없다. 그리고 프로세스를 따로 생성하지 않고 현재 프로세스가 해당 명령을 실행한 뒤 결과를 받아온다. >>> def ossys(): >>> os.system("sleep 5") >>> print("hello") >>> ossys() hello # 5초가 지난 뒤 hello 출력 subprocess subprocess.Popen 메소드는 커맨드를 실행할 수 있게 도와준다는 느낌이 더 크다. concurrent.futures 모듈이 Threading 모듈을 감싼 고수준 API인 것처럼 subprocess도 마찬가지이다. 또한, 자식 프로세스를 생성하여 실행하는 것이기 때문에 흐름에 영향을 받지 않는다. >>> def subprc(..
2022.06.03 -
[Django] ValueError: save() prohibited to prevent data loss due to unsaved related object
Project 테이블과 Subject 테이블이 OneToMany로 연결되어 있는데 project = Project.objects.first() subject = Subject.objects.first() 로 각 객체를 가져와서(실제로는 first() 사용 안함) 담아주었다. 그리고 나서 project에 해당하는 subject가 수정되면 project.subject.id = 3 이런 식으로 변경해 주었는데 해당 에러가 났다. ValueError: save() prohibited to prevent data loss due to unsaved related object 'subject'. 찾아 본 결과 project.subject.id는 subject의 id가 변경된 것이었고 project의 ..
2022.05.18 -
[ELK Stack] ELK Stack 이란
ELK Stack이란? ELK는 Elasticsearch, Logstash, Kibana 세 가지 오픈소스 프로젝트의 앞글자를 따서 만든 이름이다. Elasticsearch Elasticsearch는 Apache Lucene에 구축되어 배포된 검색 및 분석 엔진이다. 다양한 언어를 지원하고 고성능에 스키마가 없는 JSON 문서로 Elasticsearch는 다양한 로그 분석과 검색 사용을 위해 많은 사용자에게 사랑받는 오픈소스이다. 2010년에 릴리스된 이후로 빠르게 인기 검색 엔진이 되었으며, 로그 분석, 전체 텍스트 검색, 보안 인텔리전스, 비즈니스 분석 및 운영 인텔리전스 사용 사례에 일반적으로 사용되었다. JSON 문서 형식의 데이터를 Logstash와 같은 수집 도구나 API를 사용해 Elasti..
2022.05.12 -
[Django] Logging Handler
Python logging Handler Django의 로깅은 파이썬에서 제공하는 logging 모듈을 그대로 가져와서 사용한다. 파이썬에서 로깅을 할 때 사용되는 핸들러는 여러 종류가 있다. StreamHandler StreamHandler 클래스는 sys.stdout, sys.stderr와 같은 스트림으로 로깅을 출력한다. 즉, 쉽게 얘기하여 Console에 log를 남기게 된다. FileHandler FileHandler 클래스는 로깅 출력을 디스크 파일로 보낸다. StreamHandler 에서 출력 기능을 상속받는다. 지정된 파일이 열리고 로깅을 위한 스트림으로 사용된다. 모드는 기본값이 a(추가 모드) 이다. NullHandler NullHandler 클래스는 포맷이나 출력을 하지 않는다. 기본..
2022.04.28