배경현재 회사에서 FastAPI를 쓰고 있다. 자바를 전문적으로 쓸 수 있는 개발자도, 팀장님도 잘 모르시는 상황이기에 (혹은 여러가지 이유로 인해) 자바가 아닌 상대적으로 다루기 쉬운 파이썬을 사용하고 있으며, 그 중에 FastAPI 프레임워크를 사용하고 있고 앞으로도 그렇게 사용할거 같다. 둘 다 사용해본 입장에서 성능 측면에서는 컴파일러이니까 springboot가 fastapi보다 빠르다고 생각은 하지만 얼마나 성능차이가 날까 궁금해서 한 번 직접 더미 데이터로 실험을 해보려고 한다. 컴퓨터 사양은 다음과 같고더보기프로세스 : 12th Gen Intel(R) Core(TM) i7-12700F (20 CPUs), ~2.1GHz메모리 : 16384MB Springboot와 FastAPI에 대한 사..
기타
MSA의 장점 **유연성과 확장성**: 각 마이크로서비스는 독립적으로 개발되고 배포될 수 있기 때문에, 필요한 서비스만을 선택적으로 확장할 수 있습니다. 이는 시스템 전체의 확장성을 크게 향상시킵니다. **개발 효율성의 증가**: 서비스가 작고 분리되어 있어 개발자들이 더 빠르게 개발하고 테스트할 수 있습니다. 다양한 프로그래밍 언어와 기술 스택을 사용할 수 있는 유연성도 제공합니다. **고장 격리**: 한 서비스의 실패가 전체 시스템을 다운시키는 것을 방지합니다. 오류가 발생해도 해당 서비스만 영향을 받고, 시스템의 나머지 부분은 정상 작동을 계속할 수 있습니다. **배포 용이성**: 각 마이크로서비스는 독립적으로 배포될 수 있어, 새로운 기능을 빠르게 시장에 출시하고, 버그 수정을 신속하게 반영할 수..
SHA-1: 이제는 지나간 보안 기준 SHA-1은 160비트의 해시 값을 생성하는 알고리즘으로, 한 때는 디지털 서명, SSL 인증서, 소프트웨어 패키지 검증 등에 널리 사용되었습니다. 하지만 2017년, Google과 CWI Amsterdam의 연구팀이 SHA-1 충돌을 성공적으로 시연하며, 이 알고리즘의 취약성이 명확하게 드러났습니다. 이후로 SHA-1은 더 이상 안전하지 않은 것으로 간주되며, 새로운 프로젝트나 시스템에서의 사용이 권장되지 않습니다. SHA-2: 강화된 보안성을 제공하는 현대의 선택 SHA-2는 SHA-1의 후속으로 개발되었으며, 224, 256, 384, 512비트 등 여러 버전의 해시 값을 생성할 수 있는 능력을 가집니다. 이 알고리즘은 현대의 보안 요구사항을 충족시키며, 현재 ..
보안은 디지털 세계에서 가장 중요한 요소 중 하나입니다. 데이터의 무결성과 인증은 모든 소프트웨어 개발 프로젝트에서 우선시되어야 합니다. 이러한 보안 요구 사항을 충족하기 위해 HMAC(Hash-based Message Authentication Code)이 널리 사용됩니다. 이 블로그 글에서는 HMAC의 기본 개념, 작동 방식 및 개발자가 이를 알아야 하는 이유를 살펴보겠습니다. HMAC이란 무엇인가? HMAC은 특정 데이터의 무결성과 인증을 보장하기 위해 해시 함수를 사용하는 메시지 인증 코드입니다. 이는 데이터가 전송 중에 변경되지 않았으며, 신뢰할 수 있는 소스로부터 왔음을 확인하는 데 사용됩니다. HMAC 구현은 두 가지 주요 구성 요소에 의존합니다: 강력한 암호화 해시 함수(예: SHA-256..
서론: 인터넷 상에서 안전한 정보 교환은 어떠한 웹 서비스에서도 필수적인 부분입니다. 이를 위해 개발된 다양한 기술 중 하나가 바로 JWT (JSON Web Token)입니다. JWT는 간결하고 자가 수용적인 방법으로 정보를 안전하게 전달할 수 있게 해줍니다. 본 글에서는 JWT의 기본 구조와 그것이 어떻게 작동하는지에 대해 알아보겠습니다. JWT의 구조: JWT는 크게 세 부분으로 구성되어 있습니다: 헤더(Header), 페이로드(Payload), 그리고 서명(Signature). 각 부분은 점(.)으로 구분되며, Base64Url 인코딩 방식으로 인코딩됩니다. 헤더(Header): 헤더는 토큰의 타입과 사용된 알고리즘에 대한 정보를 담고 있습니다. 예를 들어, 알고리즘은 HS256이나 RS256과 같..
mcrouter의 기본 라우팅 기법 mcrouter를 사용하면서 특별한 설정을 하지 않았다면, mcrouter는 다음과 같은 기본 또는 가장 일반적인 라우팅 설정을 사용하게 됩니다: Consistent Hashing: 분산 캐시 시스템에서 널리 사용되는 라우팅 방식으로, 키를 기반으로 요청을 캐시 서버에 일관적으로 분산시킵니다. Pool Route: 캐시 서버들을 그룹화하여 구성된 풀을 통해 요청을 라우팅합니다. 이는 가장 기본적인 형태의 라우팅 설정입니다. 설정 파일을 통한 라우팅 기법 확인 및 조정 mcrouter의 동작은 설정 파일을 통해 세부적으로 조정할 수 있습니다. JSON 형식의 이 파일에서는 서버 풀, 라우팅 정책, 복제 및 샤딩 설정 등을 포함하여 다양한 옵션을 지정할 수 있습니다. 설정..
### 제목 "싱글톤 패턴에서의 무상태 설계: 왜 중요한가?" ### 내용 싱글톤 패턴은 객체 지향 프로그래밍에서 특정 클래스의 인스턴스가 하나만 생성되도록 보장하는 디자인 패턴입니다. 이러한 싱글톤 패턴에서 "무상태(stateless)"라는 개념은 매우 중요한 역할을 합니다. 그렇다면 무상태가 무엇이며, 왜 중요한 것일까요? #### 무상태(Stateless)란? 무상태라는 용어는 객체가 어떠한 상태도 유지하지 않는다는 의미입니다. 즉, 인스턴스의 작동은 전적으로 입력에 의존하며 이전의 작업이 후속 작업에 영향을 미치지 않습니다. #### 싱글톤 패턴에서 무상태의 중요성 싱글톤 패턴은 전역 상태를 공유하기 때문에, 객체 내부에 상태를 저장하면 여러 부분에서의 동시 액세스로 인해 예기치 않은 동작이 발생..
1. 동기(Synchronous) 요청과 동시에 응답이 오는 경우를 의미한다. 요청과 응답은 거의 동시에 일어난다 보면 됨 요청과 응답에 대한 작업단위를 트렌젝션(Transcation) 이라 부른다. 요청을 하는 데 도중에 오류가 발생하면 응답값을 받을 수 없는 상황이기에 동기화가 이루어 질 수 없음 예) 사이트 접속, 카드결제 사이트 접속을 하는데 도중에 오류가 걸리면 응답값을 받을 수 없는 상황이기에 페이지 화면을 제대로 못 봄 2. 비동기(Asynchronous) 동기와 반대로 요청과 동시에 응답이 바로 오지 않음 요청을 한 후 응답이 오길 기다리지 않고, 다른 요청을 할 수 있기 때문에 자원을 효율적으로 쓸 수 있음 예) 이메일 상대방에게 이메일을 보낼지라도 해당 회신이 즉시 오지 않을 수 있다.