전체 글

Blockchain

비잔틴-장군-문제와-PBFT

블록체인의 핵심에는 분산 시스템이 있다고할 수 있다. 노드는 분산 시스템에 대한 개별 참가자로 정의할 수 있으며 모든 노드는 서로 데이터를 주고받을 수 있다. 이러한 노드들은 정상적이거나 악의적인 사용자일 수도 있으며 각각의 노드는 메모리와 프로세스를 갖고 있따. 이때 비합리적인 행동을 보이는 노드를 비잔틴 장군 문제(Byzantine Generals Problem)에서 이름을 따서 비잔틴 노드라고도 한다. # 비잔틴 장군 문제 1982년 램포트와 그 외 사람들이 '비잔틴 장군 문제(The Byzantine Generals Problem)'이라는 연구 논문에서 사고 실험을 제안했는데 이 문제에서 비잔틴 군은 각기 다른 부대를 이끌고 있는 장군들이 도시를 공격하거나 퇴각하려고 계획을 세우고 있다. 장군들끼..

SpringBoot

kotlin 환경에서 OpenFeign ErrorDecode 시 발생하는 역직렬화 작업 오류

문제 상황 기존 A서비스에서 B 서비스 호출 시 FeignException 핸들링은 작업해두었으나, 그로인해 오류가 발생하게되면 핸들링해놓은 응답만 반환될 뿐, 특정 상황에 커스텀된 오류 메시지가 A서비스를 호출한 클라이언트 측까지 전달되지 않았습니다. 고로 ErrorDecode를 통해 B의 오류 메시지를 클라이언트측까지 전달하려 했으나..... com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.info.info_v2_backend.common.exception.ErrorResponse` (no Creators, like default constructor, exist): canno..

SpringBoot

JPA-Native-Query에-파라미터로-Enum-값-받을-때-오류

JPA에서 nativeQuery 사용 시에 넣는 파라미터가 Enum으로 입력 시에 java.sql.SQLException: Incorrect string value: 에러 해결 https://herojoon-dev.tistory.com/12 해당 글에서 포스팅하고 있는 'utf8mb4' 관련 오류가 발생하는데 사실 enum값을 전달할 때 enum.name을 전달하는 것이 아니라 코드 자체를 인코딩해서 전달해서 발생하는 문제로 추정된다. 문제 발생 쿼리: 문제 해결 쿼리: 위와 같이 enum의 name을 String으로 받아서 파라미터로 입력하면 해결된다.

DevOps/AWS

AWS-Organizations란

AWS Organizations란? 여러 aws 계정(루트, iam 포함)을 조직에 통합하고 중앙에서 관리할 수 있는 계정 관리 서비스. 계정 관리 및 통합 결제 기능을 지원하며, 기업의 예산, 보안 및 규정 준수 요구 사항 준수에 도움을 줄 수 있음. 조직 관리자로써 기존 계정 초대 또한 가능함. 모든 AWS 계정의 중앙 집중식 관리 기존 계정을 하나의 조직으로 결합해 중앙에서 계정을 관리할 수 있음. 모든 멤버 계정에 대한 통합 결제 통합 결제에서 관리 계정은 조직에 속한 멤버 계정의 결제 정보, 계정 정보 및 계정 활동에 엑세스할 수도 있으며 이를 통해 Cost Explorer와 같은 서비스를 활용할 수도 있음. 예산, 보안, 규정 준수 필요 충족을 위한 계정의 계층적 그룹화 계정을 조직 단위(OU..

DevOps/AWS

S3 File Upload PresignedUrl로 처리

기본 제가 작성한 서버에서는 클라이언트(FE)로부터 파일을 직접 받아서 s3에 업로드하는 방식을 사용했습니다. 하지만 이러한 방식에서는 많은 요청이 입력될 경우 부하가 발생할 수 밖에 없습니다. 때문에 이 문제를 해결하고자 기존 방식에서, FE가 BE를 거치지 않고 직접 S3에 파일을 업로드할 수 있도록 수정하였습니다. 추가적인 S3 upload Diagram 첨부합니다. 기존 S3upload 과정 PresignedURL upload 과정 위와 같이 처리함으로써 비정상적인 파일의 서버 업로드시 발생할 수 있는 위협 제거와 불필요한 네트워크 비용을 획기적으로 줄일 수 있습니다. 기존 UploadAttachment.kt @Async override fun uploadAttachment(request: Gen..

DevOps/AWS

EBS 활용 EC2 기본 웹서버 설정

기본적인 온프레미스 환경에서의 서버 구성을 클라우드 환경에서 제공하는 EC2 서비스를 활용합니다. 우측 상단 인스턴스 시작 버튼을 통해 시작합니다. Quick Start를 통해 aws에서 기본적으로 제공하는 운영체제 이미지로 원하는 운영체제를 선택합니다. (저는 Amazon Linux(CentOs계열)을 선택했습니다.) 본인이 원하는 수요에 따라, 원하는 크기의 인스턴스를 선택합니다. 키페어는 키페어 없이 진행으로 선택합니다. 이후, 보안그룹 또한 보안 그룹 생성을 통해 새롭게 생성합니다. 스토리지(EBS) 구성은 30GB 볼륨을 부착합니다. 이로써, EBS(Elastic Block Store) 설정이 완료되었습니다. 스팟 인스턴스 요청: 스팟 인스턴스 타입을 요청합니다. 지속적인 서비스 제공을 위한다면..

xlwdn98767
개발 조무사 IT 개발 블로그