프로그래밍 기본 개념 (스레드, 라이브러리, JWT, HTTP...)

2025. 8. 10. 12:26·기타

1. 스레드(Thread)

  • 하나의 작업 단위.
  • 소프트웨어적 스레드: 하나의 프로그램 내 논리적 작업 단위.
  • 하드웨어적 스레드: CPU의 물리적 처리 단위.
  • 파이썬은 멀티 스레드 지원
  • 서버 운영 시: 스레드를 많이 사용하면 속도는 빨라지지만 메모리와 CPU 사용량 증가 → 서버 비용↑ 대규모 트래픽에 비효율 적일 수 있음

2. 라이브러리 vs 프레임워크

  • 프레임워크: 정해진 틀 안에서 작업, 흐름 제어권이 프레임워크에 있음.
    예: Django, Spring
  • 라이브러리: 필요한 기능만 가져와서 사용, 제어권이 개발자에게 있음.
    예: Pandas, NumPy

6. HTTP 메서드

  • GET: 데이터 조회 (URL에 데이터 노출, 보안 X)
  • POST: 데이터 생성 (Body에 데이터 저장, 암호화 가능)
  • PUT/PATCH: 데이터 수정 (POST의 변형)
  • DELETE: 데이터 삭제

7. HTTPS & SSL

HTTP와 HTTPS의 차이는 보안의 차이

  • SSL 인증서: 모든 요청을 암호화.
  • 프론트엔드와 백엔드 모두 HTTPS 사용.

8. JWT (JSON Web Token)

  • Stateless 인증 방식. (상태가 없다.)
  • Access Token: 짧은 유효기간(2~12시간).
  • Refresh Token: 긴 유효기간(1년 이상), Access Token 재발급에 사용.
  • Refresh Token 유출 시 매우 위험 → 별도 DB에 보관하거나 물리적으로 분리.

- 예를 들어 로그인한 유저만 볼 수 있는 화면을 구성할 때, 해당 유저의 인증 여부를 세션, JWT 등을 통해 확인 할 수 있는데 
세션은 유효기간이 길고 프론트엔드에서 언제나 접근 가능하기 때문에, 보안에 취약하다. 그래서 JWT를 주로 사용한다.

- 토큰 유효기간, 토큰 시크릿 문자열 등 사용자가 다양하게 커스텀 할 수 있다.

9. HTTP 상태 코드

  • 100~199: 정보(Informational) -> 애매한 성공
  • 200~299: 성공(Success)
  • 300~399: 리다이렉션(Redirection) -> 예) 주소가 바뀌어 현재에 접근할 수 없는 페이지의 경우  
  • 400~499: 클라이언트 에러(Client Error) -> 예) 클라우드 서버가 꺼져있을 때, 자연재해, 서버 자체가 실행이 안되었을 때
    • 401/403: 권한 문제
    • 404: 리소스 없음
  • 500~599: 서버 에러(Server Error)

10. 가상환경

  • 파이썬: venv, virtualenv
  • 자바: JVM
  • 장점: 환경 분리, 재사용성 높음. 
    • 예) 가상환경에 라이브러리 설치 후 가상환경 자체를 다른 개발 환경에서 가져다 사용할 수 있음 

11. 배포

  • AWS 같은 클라우드 환경에 서버를 실행한다. 즉 AWS 데이터 센터같은 곳에 하나의 컴퓨터(서버)를 빌려 그 환경에서 24시간 돌아갈 수 있도록 배포하는 것이다

12. 서버리스

  • 서버를 직접 구축·운영하지 않고, 클라우드 서비스 제공자의 서버를 이용해 실행하는 방법 
  • 대표 서비스: AWS Lambda, Google Cloud Functions, Azure Functions.
  • 장점: 서버 관리 불필요, 사용한 만큼 비용 지불, 확장성 좋음.

12-1. 서버리스의 보안 위험

  • 프론트엔드에서 서버(백엔드) 없이 직접 클라우드 리소스에 접근하면 위험.
  • 이유:
    • API 키나 인증 토큰이 브라우저 코드에 노출될 수 있음.
    • 사용자가 요청을 위조해서 민감 데이터에 접근 가능.

12-2. 안전한 요청 흐름

[FrontEnd] → [Database / 외부 API]

  • 프론트엔드 : 사용자 요청을 백엔드(API)에 전달만 함
  • 백엔드 :
    • 1. JWT 등 이용해 사용자 확
    • 2. 권한 체크 (Authorization)
    • 3. 데이터 베이스 접근해 데이터 가지고 와 프론트엔드에 전달'

13. 핵심 보안 원칙

  1. 프론트엔드에는 민감한 인증 정보 저장 금지.
  2. API 요청은 반드시 백엔드를 거쳐서 실행.
  3. 데이터베이스 접근은 백엔드 전용 계정만 사용.
  4. 모든 통신은 HTTPS로 암호화.
  5. 토큰은 유효기간·권한을 최소한으로 설정.

'기타' 카테고리의 다른 글

데이터베이스 전용 툴과 서버 운영 개념 정리  (0) 2025.09.21
프로그램 기본 개념 2 (OS, 모바일 앱 개발, 시간 복잡도, 데이터 베이스, 깃허브, AI 활용)  (8) 2025.08.17
파이썬 기초 문법 2 (변수명 규칙, 연산자, 런타임 에러, 컴파일 에러)  (0) 2025.08.10
파이썬 기초 문법과 메모리 개념 정리 (자료형, 함수, 조건문)  (1) 2025.08.03
API란 무엇인가? 쉽게 정리해보기  (2) 2025.07.13
'기타' 카테고리의 다른 글
  • 데이터베이스 전용 툴과 서버 운영 개념 정리
  • 프로그램 기본 개념 2 (OS, 모바일 앱 개발, 시간 복잡도, 데이터 베이스, 깃허브, AI 활용)
  • 파이썬 기초 문법 2 (변수명 규칙, 연산자, 런타임 에러, 컴파일 에러)
  • 파이썬 기초 문법과 메모리 개념 정리 (자료형, 함수, 조건문)
기니피그이올시다
기니피그이올시다
은평구 불키보드
  • 기니피그이올시다
    Mhlee Programming
    기니피그이올시다
  • 전체
    오늘
    어제
    • 분류 전체보기
      • html
      • css
      • javascript
      • react
      • design system
      • 기타
      • 책 리뷰
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    useState
    Prettier
    리액트
    NextJS
    CSS
    useEffect
    svgr
    컴포넌트
    breadcrumbs
    React
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
기니피그이올시다
프로그래밍 기본 개념 (스레드, 라이브러리, JWT, HTTP...)
상단으로

티스토리툴바