본문 바로가기

분류 전체보기160

[암호학] SHA-256은 안전하지 않다. 비트코인 채굴은 SHA-256 hash를 깨는 과정이다. SHA-256 hash를 깨면 보상으로 비트코인을 얻게 된다.비트코인 채굴 초창기에는 난이도가 낮아 일반적인 그래픽 카드로도 충분히 채굴이 가능했다.그러나 점점 비트코인 채굴 난이도가 올라가고 일반적인 그래픽 카드로는 채산성이 나오지 않게 되었고, 비트코인 채굴 특화 용도의 주문제작 반도체(ASIC, FPGA)주문제작 반도체를 이용해야 채산성이 나오게 되기에 이르렀다. 이러한 주문제작 반도체를 이용하면 일반적인 그래픽 카드보다 10만배 이상의 속도로 비트코인 채굴이 가능했고, 이는 곧 SHA-256의 보안 취약화를 불러왔다.  아무튼 요점은 하드웨어의 발전으로 노가다로 SHA-256을 파훼하기 쉬워졌단 것이다. SHA-256 대신argon2 (bl.. 2024. 2. 14.
어쩌면 파괴왕 다니는 회사마다 폐업 2024. 1. 28.
[Spring] 코틀린 쓸 때 @Valid 동작이 안된다면 data class OwnerSignUpRequest( @field:Email(message = "이메일 형식을 입력해주세요.") val email: String?, @field:Size(min = 8, message = "비밀번호는 8글자 이상이어야 합니다.") val password: String?, @field:Size(min = 11, message = "잘못된 휴대전화 번호입니다.") val phoneNumber: String?, val storeName: String? = null, val ownerName: String, @field:Size(min = 10, message = "사업자번호는 10글자 이상이어야 합니다.") val businessRegistrationNumber: String.. 2024. 1. 18.
실시간 알림 서버에서 부하와 비용 최소화하기 1. 알림서버는 Webflux로 구축하고, 오직 데이터 스트림을 내려주는 역할만 한다.2. 부하를 줄이기 위해 소켓 통신이 아닌 HTTP의 기본 스펙인 가벼운 리얼타임 스트리밍이 가능한 SSE를 이용한다.  - 구현이 매우 쉽다는 장점도 있다.3. 단방향 통신이라는 SSE의 단점을 극복하기 위해 데이터 생성, 상태 업데이트에 대한 것은 람다(무료니까!)로 처리한다.  - 클라에서 직접적으로 람다를 트리거 하는게 일단 가능한지 여부는 궁금하긴한데, 현재 프론트는 Next로 구현되고 있기 때문에 그것이 가능하든 말든 문제 없다. Next의 백엔드단에서 쏘면 된다.4. 하나의 call 마다 Lambda를 사용하지 않기 위해 SQS를 buffer로써 이용한다. 즉, 여러 요청들을 모아서 람다를 배치(요청 묶음).. 2024. 1. 10.
[Spring] 멀티 모듈 버릴게요 MSA를 하기에는 시간이 없고, Facade 레이어를 적용해보면서 아예 레이어간 의존성을 최대한 독립적으로 구성하기 위해 멀티 모듈을 도입했다. 각 레이어의 이름은 마음대로 지었다. 컨셉은 하위의 모듈들은 상위 모듈을 참조할 수 없다는 것이다. 그리고 Common 레이어는 다른 레이어를 참조할 수 없다. Gateway: 흔히 Controller 혹은 Presentation 이라고 불리는 레이어이다. 인증을 담당하기도 한다. Service: Facade레이어이다. 핵심 비즈니스 로직이 들어가는 레이어이다. Domain: Domain의 유효성이나 제한 조건들을 검증하는 레이어이다. 도메인 자체의 예외처리는 여기 행해지고, Service(Facade)레이어에서는 예외처리는 최소화하고, 비즈니스 로직에만 집중할.. 2024. 1. 3.