본문 바로가기

분류 전체보기

(77)
[성능 테스트] Throughput(TPS), Latency Throughput(TPS), Latency: API 성능 테스트 성능테스트란? 제작한 웹 서버(API)가 얼마나 많은 사용할 수 있는지 테스트하거나, 두가지 설계에 대해 어떤 설계가 더 좋은 성능을 내는지 확인하는 테스트이다. 성능의 지표 Throughput (시간당 처리량) 서비스가 1초당 처리할 수 있는 작업량이다. 단위로는 주로 TPS(Transaction per seconds)를 사용함 Throoghput이 클수록 작업이 더 빨리 끝남 높은 수치일수록 성능이 좋음 Latency (지연시간) 시스템이 클라이언트로부터 Request를 받아서 Response를 보내주기까지 걸리는 시간을 의미한다. 특정 작업을 얼마나 빨리 처리할 수 있는지 나타내는 성능 지표 Latency가 작을수록 더 빨리 응답함 ..
[클린 코드] 에러 핸들링 클린 코드: 에러 핸들링 1. 오류 코드 보다는 예외(Exception)을 사용한다. try, except를 사용하면 오류인지 확인하는 불필요한 로직을 줄일 수 있다. ### as-is from enum import Enum class ErrorCodes(Enum): VALUE_ERROR="VALUE_ERROR" def we_can_raise_error(): ... return ERROR_CODES.VALUE_ERROR def use_ugly_function(): result = we_can_occur_error() if result == ErrorCodes.VALUE_ERROR: # 처리 코드 ... ### to-be def we_can_raise_error(): if ... raise ValueErr..
[클린 코드] 클래스 클린 코드: 클래스 1. 단일 책임 원칙(SRP)을 지킨다. 하나의 클래스는 하나의 책임만 가진다. 2. 응집도를 높인다. 응집도가 높을수록 클래스의 메서드들은 인스턴스 변수들을 많이 사용한다. ### as-is class LowCohesion: def __init__(self): self.a = ... self.b = ... self.c = ... def process_a(self): print(self.a) def process_b(self): print(self.b) def process_c(self): print(self.c) ### to-be class HighCohesion: def __init__(self): self.abc = ... def process_a(self): self.abc.p..
[클린 코드] 함수 클린 코드: 함수 1. 하나의 역할만 수행한다. (Single Responsibility Principle) 함수의 역할이 많아지면 안좋은점 가독성이 떨어진다. 오류가 생길 가능성이 커진다. 함수에 대한 테스트를 진행하기 어려워진다. ### as-is def create_user(email, password): # validation 로직 if "@" not in email or len(password) < 6 : raise Exception("유저 정보를 제대로 입력하세요") user = {"email" : email, "password" : password} database = Database("mysql") database.add(user) email_client = EmailClient() ema..
[클린 코드] 주석 & 포맷팅 클린 코드: 주석 & 포맷팅 주석을 사용 할 때 1. 법적인 정보를 담을 때 # Copyright (C) 2021 ... 2. 의도를 명확하게 설명할 때 # throughput을 늘리기 위해 스레드를 10개까지 늘린다. for idx in range(10): thread = threading.Thread(target=...) thread.start() ... 3. 중요성을 강조할 때 # 최종 결제를 하기 전에 진행해야 하는 validation 함수 def validate_buyable(wallet, price, ...): ... 4. 결과를 경고할 때 # WARNING: API 서버가 항상 양호한지 알 수 없음. 관용적으로 사용되는 키워드 TODO : 당장은 아니지만 다음에 해야 할 때 FIXME : 치..
[OS] CPU와 메모리 CPU와 메모리 CPU(중앙처리장치: Central Processing Unit) CPU는 메모리에 저장된 명령어를 읽고, 읽은 명령어를 해석해서 실행하는 부품이다. CPU 내부는 ALU, Register, CU 로 구성된다. ALU (산술논리연산장치: Arithetic Logic Unit) ALU는 계산을 위한 부품이다. 컴퓨터 내부에서 수행되는대부분의 계산을 수행한다. Register (레지스터) Register는 CPU 내부의 작은 임시 저장 장치이다. 프로그램을 실행하는 데 필요한 값들을 임시로 저장한다. CPU 안에는 각기 다른 이름과 성능의 여러 레지스터가 존재한다. CU (제어장치: Control Unit) CU는 컴퓨터 부품들을 관리하고 작동시키기 위한 전기 신호(제어 신호)를 보낸다. C..
[Python] 파이썬 에러 핸들링: Exceptions 파이썬 에러 핸들링: Exceptions 파이썬의 예외 처리는 try, except, else, finally 총 4가지로 이루어져 있다. try: 실행할 코드 except: 예외가 발생했을 때 처리하는 코드 else: 예외가 발생하지 않았을 때 실행할 코드 finally: 예외 발생 여부와 관계없이 항상 실행되는 코드 모든 에러 확인 try: ... except Exception as e: print(e) 여러개의 에러 처리 try: ... except ValueError as e: print(e) except ZeroDivisionError as e: print(e) 에러 임의 생성 try: a = int(input()) if a == 0: raize ZeroDivisionError else: b =..
[Network] HTTP, HTTPS 어떤 차이가 있지? HTTP, HTTPS 어떤 차이가 있지? HTTPS는 HTTP에 보안기능이 추가된 프로토콜이다. 각각의 항목에 대해 아래에서 자세히 알아보자. HTTP(HyperText Transfer Protocol) HPPT란 하이퍼 텍스트 전송 프로토콜(HyperText Transfer Protocol)의 약자로 웹에서 정보를 주고 받을 수 있는 프로토콜이다. 주로 HTML 문서를 주고 받는데 쓰였지만 최근에는 Plain text, JSON, XML 등 다양한 형태의 정보도 전송하고 있다. 🔮 프로토콜 (Protocol) 복수의 컴퓨터 사이나 중앙 컴퓨터와 단말기 사이에서 데이터 통신을 원활하게 하기 위해 필요한 통신 규약이다. 신호 송신의 순서, 데이터의 표현법, 오류 검출법 등을 규정한다. HTTP의 특징으로는..