Keep-alive

클라이언트와 서버 간의 TCP 연결을 계속 유지하는 메커니즘

기본적으로 HTTP/1.0에서는 요청마다 새로운 TCP 연결을 생성하게 되는데, 이렇게 되면 매 요청마다 연결과 종료 과정에서 오버헤드가 발생한다. Keep-Alive 메커니즘은 이러한 문제를 해결하기 위해 도입되었다.

Keep-Alive의 역할

  1. 연결 재사용: Keep-Alive를 사용하면 동일한 연결을 여러 요청에 걸쳐 재사용할 수 있다. 이로 인해 연결 생성에 필요한 시간과 리소스가 절약된다.

  2. 성능 개선: 연결을 재사용함으로써 네트워크 지연 시간이 줄어들고, 전반적인 응답 시간이 개선된다.

  3. 리소스 효율성: 동시에 많은 연결을 열지 않으므로 서버의 리소스 사용이 효율적이다.

Keep-alive 사용 상황

  • 동일한 도메인의 여러 자원 요청하는 경우

    • 웹 페이지가 로드될 때, 동일한 서버에서 여러 이미지나 스크립트를 로드해야 하는 경우 Keep-Alive를 사용하면 효율적이다.
  • API 요청 최적화

    • 여러 API 호출이 연속적으로 이루어지는 서비스에서 Keep-Alive를 사용하면 연결 성립 시간을 절약하여 전체 성능을 향상시킬 수 있다.

cf.

  • HTTP/1.1이상 버전에서는 Keep-Alive가 기본으로 활성화되어 있다.
    • Keep-Alive 연결을 비활성화하려면, 명시적으로 헤더에 Connection: close를 설정해야 한다.
  • Keep-Alive 연결은 무한정 유지되는 것이 아니며, 일정 시간이 지나면 자동으로 종료된다. 이 시간은 서버 설정에 따라 조절할 수 있다.

JSON

정의

  • JSON은 경량의 데이터 교환 형식이다.
  • 텍스트 기반으로 읽기 쉽고, 사람과 기계 모두에게 친숙한 형식이다.
  • 다양한 언어에서 사용할 수 있으며, 특히 웹에서는 데이터 전송의 표준으로 자리 잡았다.
  • JSON은 RFC 8259 표준에 의해 정의된다.

구조

  • 객체: 중괄호 {} 안에 키-값 쌍으로 이루어진다. 키는 문자열이며, 값은 다양한 타입이 될 수 있다.
  • 배열: 대괄호 [] 안에 값의 목록을 나타낸다.
  • : 문자열, 숫자, 객체, 배열, true, false, null 등이 올 수 있다.

사용 예시

  • 웹 API에서 요청과 응답 데이터로 사용된다.
  • 설정 파일에서 사용되기도 한다.
  • 데이터베이스 레코드 저장 형식으로 사용된다.

JSON 파일 쓰기(write) 코드 예시 - Python

import json

def write_user_info(file_path, user_info):
    with open(file_path, 'w', encoding='utf-8') as file:
        json.dump(user_info, file, ensure_ascii=False, indent=4)

user_info = {
    'is_oauth2': True,
    'phone_number': '010-1234-5678',
    'address': '경기도 성남시 분당구 동판교로~',
    # 기타 회원 정보
}

file_path = 'user_info.json'
write_user_info(file_path, user_info)

JSON 파일 읽기(Read) 코드 예시 - Python

import json

def read_user_info(file_path):
    with open(file_path, 'r', encoding='utf-8') as file:
        user_info = json.load(file)
        return user_info

file_path = 'user_info.json'
user_info = read_user_info(file_path)
print(user_info)

보안 고려 사항

  • JSON을 처리할 때, JSON 인젝션과 같은 보안 취약점을 방지하기 위해 검증 및 적절한 처리가 필요하다.

관련 라이브러리와 도구

json 모듈 in Python, JSON 객체 in JavaScript, Gson in java


본 후기는 정보통신산업진흥원(NIPA)에서 주관하는 <AI 서비스 완성! AI+웹개발 취업캠프 - 프론트엔드&백엔드> 과정 학습/프로젝트/과제 기록으로 작성 되었습니다.
#정보통신산업진흥원 #NIPA #AI교육 #프로젝트 #유데미 #IT개발캠프 #개발자부트캠프 #프론트엔드 #백엔드 #AI웹개발취업캠프 #취업캠프 #개발취업캠프

0개의 댓글