IDC에 서버 구축 요청

한라봉봉·2024년 9월 23일

NAT란

https://inpa.tistory.com/entry/WEB-%F0%9F%8C%90-NAT-%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80

이중화

운영과 개발을 분리한다! 당연한 얘기..

요청 필요 스펙 목록

  1. Core수(CPU) ex) 4.Core
  2. Memory(ram) ex) 8GB
  3. 저장공간 ex) 100GB

요청 필요 환경구성

  1. OS 종류 ex) rocky 8.10, ubuntu 등

회의 전 정리한 내용

1. 대역폭

1. 개념 정리

네트워크 대역폭은 서버와 클라이언트 간의 데이터 전송 속도를 결정하는 중요한 요소입니다. 대역폭은 초당 얼마나 많은 데이터가 전송될 수 있는지를 나타내며, 일반적으로 Mbps(Megabits per second) 또는 Gbps(Gigabits per second) 단위로 측정됩니다.

네트워크 대역폭의 주요 개념

업링크 대역폭(Uplink Bandwidth): 서버에서 외부로 데이터를 전송할 때의 속도를 의미합니다.
다운링크 대역폭(Downlink Bandwidth): 외부에서 서버로 데이터를 수신할 때의 속도를 의미합니다.
대기 시간(Latency): 데이터가 네트워크를 통해 이동하는 데 걸리는 시간으로, 실시간 통신에서는 대역폭만큼 중요한 요소입니다.

소켓 통신과 대역폭의 관계

소켓 통신을 사용하는 애플리케이션의 경우 실시간 데이터 전송이 이루어지기 때문에 대역폭과 대기 시간이 중요합니다. 하지만 실제로 필요한 대역폭은 애플리케이션의 데이터 전송량과 통신 빈도에 따라 달라집니다.

실시간 데이터 전송량이 크지 않은 경우: 대역폭이 크게 필요하지 않을 수 있습니다. 예를 들어, 텍스트 기반의 채팅 애플리케이션이나 상태 정보 업데이트 정도라면 대역폭 요구량이 상대적으로 낮습니다.
실시간 데이터 전송량이 큰 경우: 동영상 스트리밍, 대용량 파일 전송, 고해상도 이미지 전송 등은 높은 대역폭이 필요합니다.

애플리케이션에 적절한 대역폭 확인

데이터 전송량과 빈도를 고려하여 필요한 대역폭을 추산할 수 있습니다. 예를 들어, 초당 1MB의 데이터를 전송해야 한다면 최소 8Mbps 이상의 대역폭이 필요합니다.
소켓 통신의 패킷 크기, 주기, 데이터 압축 여부 등을 고려하여 정확한 대역폭 요구 사항을 결정하는 것이 중요합니다.
결론
소켓 통신으로 실시간 데이터 전송이 이루어진다면, 애플리케이션의 데이터 전송량이 많을수록 고대역폭이 필요합니다. 만약 데이터량이 크지 않고 텍스트나 경량 데이터라면 중간 정도의 대역폭으로도 충분할 수 있습니다. 정확한 대역폭 요구량을 파악하려면 실제 데이터 전송량과 주기를 모니터링하는 것이 좋습니다.

2. 실제 세팅관련

1. 소켓 실시간 통신

웹소켓 메시지 사이즈는 Stomp 디폴트 값인16640바이트(16 kb)를 사용.

https://intruder.tistory.com/326

2. 이미지, pdf 전송

이미지, pdf의 경우 10MB 까지 be로 api 전송, MultipartFile 형식사용

2. DB 커넥션 풀

1. 개념 정리

커넥션 풀 크기는 데이터베이스에 동시에 연결할 수 있는 최대 연결 수를 결정하는 것으로, 예상 동시 접속자 수에 따라 적절하게 설정해야 합니다. 너무 작게 설정하면 커넥션 부족으로 애플리케이션이 대기 상태에 빠질 수 있고, 너무 크게 설정하면 데이터베이스 서버의 리소스가 고갈될 수 있습니다.

일반적인 커넥션 풀 크기 설정 가이드

  1. 동시 접속자 수 50명 이하
    권장 커넥션 풀 크기: 10~20
    이 규모에서는 데이터베이스의 부하가 크지 않으므로 기본적으로 10~20 정도의 커넥션 풀을 설정하면 안정적입니다.
  2. 동시 접속자 수 50~100명
    권장 커넥션 풀 크기: 20~40
    동시 사용자가 많아지므로 커넥션 풀 크기를 증가시켜야 합니다. 그러나 40을 넘지 않는 것이 효율적입니다.
  3. 동시 접속자 수 100~200명
    권장 커넥션 풀 크기: 40~80
    100명 이상의 동시 접속이 예상될 경우, 데이터베이스의 처리 능력에 맞게 커넥션 풀을 늘려줍니다.
  4. 동시 접속자 수 200~500명
    권장 커넥션 풀 크기: 80~150
    이 정도 규모에서는 데이터베이스 서버의 성능이 중요한 역할을 합니다. 따라서 서버의 CPU 및 RAM 용량에 따라 80~150 범위로 설정하면 좋습니다.
  5. 동시 접속자 수 500명 이상
    권장 커넥션 풀 크기: 150~300
    대규모 접속 환경에서는 커넥션 풀 크기가 더욱 중요해집니다. 서버의 하드웨어 스펙과 애플리케이션 특성에 따라 150~300 사이로 조절합니다.

2. 실제 세팅관련

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: dbuser
    password: dbpassword
    driver-class-name: com.mysql.cj.jdbc.Driver
    hikari:
      maximum-pool-size: 30      # 최대 커넥션 수
      minimum-idle: 10           # 최소 유휴 커넥션 수
      idle-timeout: 300000       # 유휴 커넥션의 최대 대기 시간 (밀리초, 5분)
      connection-timeout: 30000  # 커넥션 풀에서 커넥션을 가져올 때까지의 대기 시간 (밀리초, 30초)
      max-lifetime: 1800000      # 커넥션의 최대 수명 (밀리초, 30분)
profile
백엔드 개발공부 로그를 기록합니다

0개의 댓글