분류 전체보기269 [기타] String으로 정렬하기 - 기본적인 룰, 시간, ULID 개요안녕하세요. 요구 사항으로 특정 리스트에 대해서 시간순으로 정렬해달라는 요구사항을 받았습니다. 이를 정렬하기 위해서 어떤 데이터 타입의 형태를 사용하실건가요 ? 혹시 timestamp만 고려하고 있으시진 않으신가요 ? timestamp 정말 좋은 방법이지만 가독성이 좋지 않은건 누구나 아는 사실입니다. 혹시 String Type의 시간 표현 방법인 ISO_8601로 정렬하는건 생각해보셨나요 ? 혹시 이게 제대로 정렬될지 걱정이 들지 않으시나요 ?저도 이와 같은 고민을 했고 여러 테스트를 진행해보았습니다. 오늘은 String 타입의 형태의 정렬에 대해서 한번 알아보도록 하겠습니다.String의 정렬String의 정렬은 일반적으로 시스템에 따라서 정렬 순시가 다를 수 있습니다만 기본적으로 사전순(lexi.. 2025. 2. 26. [DynamoDB] DynamoDB는 읽고 쓰는 만큼 비용을 냅니다 개요안녕하세요. 오늘은 DynamoDB에서의 비용계산에 대해서 알아보도록하겠습니다. 일반적으로 aws의 다른 SaaS 들은 서버 스펙과 거기서 사용하는 스토리지의 양, 그리고 네트워크 비용이 합해져서 비용이 계산됩니다. 그런데 이와는 다르게 DynamoDB 서버 스펙이 아닌 읽고 쓰는 데이터의 량 만큼을 계산해서 비용을 냅니다. 잘 사용하면 비용이 절감되지만 잘못사용하면 비용 폭탄을 맞게되는 이유입니다. 오늘은 DynamoDB의 비용 계산하는 방법에 대해서 알아보도록 하겠습니다.DynamoDB 비용DynamoDB의 비용 계산은 다소 복잡합니다. 비용에 영향을 주는 요소는 아래와 같습니다.용량 모드(Capacity Mode)읽기 및 쓰기 용량 단위(Capacity Unit)스토리지 사용량테이블 클래스 선택.. 2025. 2. 17. [DynamoDB] DynamoDB에서 사용하는 용어 정리 개요안녕하세요 ! 이전시간에는 RDB와의 비교를 통해서 DynamoDB가 가지는 특이점들을 알아보았습니다. 오늘 포스팅에서는 DynamoDB 사용의 기본으로 돌아가서 용어들과 마지막으로 DynamoDB의 비용을 계산하는 방법에 대해서 알아보도록 하겠습니다.Table 용어 정리먼저 테이블에 대해서 알아보도록 하겠습니다. 테이블은 DynamoDB에서 데이터가 저장되는 전체적은 구조를 나타냅니다. DynamoDB는 Table을 데이터 저장 공간의 기본으로합니다. 테이블에 들어가는 정보를 실제 표로 나타내면 아래와 같습니다. 이어서 각 용어에 대해서 알아보도록 하겠습니다.Table데이터를 저장하는 기본 단위입니다.관계형 데이터베이스(RDBMS)의 테이블과 유사합니다.관계형 데이터베이스와 다른점은 DynamoDB.. 2025. 2. 13. [DynamoDB] 그거 알아요 ? DynamoDB는 HTTP로 통신한다는거 (RDB 운영 이슈, Transaction, Conflict) 개요DynamoDB의 Java SDK 코드중 AmazonDynamoDBClient 코드를 따라가다보면 재밌는것을 확인할 수 있습니다. 아래를 보도로 하겠습니다./** * Invoke the request using the http client. Assumes credentials (or lack thereof) have been configured in the * ExecutionContext beforehand. **/private Response doInvoke(Request request, HttpResponseHandler> responseHandler, ExecutionContext executionContext, URI discoveredEndpoint, URI uriFromEn.. 2025. 2. 9. [DynamoDB] 왜 DynamoDB와 같은 Wide Columns DB는 RDB에 비해서 더 확장성(scalability)을 가지는가 ? 개요안녕하세요. DynamoDB는 Wide Columns DB의 일종입니다. 일반적으로 알려져 있기로 DynamoDB는 RDB 보다 훨씬 좋은 확장성(scalability)를 가지고 있다고 알려져있습니다. 그렇다면 어떻게해서 이러한 구조를 가질 수 있을까요 ? 오늘은 확장성이란 무엇인지 먼저 확인하고 RDB와 DynamoDB에서 어떻게 확장성을 가져가는지에 대해서 알아보는 시간을 가져보겠습니다.확장성(Scalability) 란 ?먼저 확장성(Scalability)이란 서비스의 요구사항 및 트래픽, 데이터가 증가됨에 따라 이를 처리할 때 성능적인 저하 없이 성장할 수 있는 능력이라고 정의할 수 있습니다.확장성은 크게 2가지 방식으로 달성할 수 있습니다. 수직적 확장(Scale-Up)과 수평적 확장(Scal.. 2025. 2. 4. [Java 11 -> 17] immutable Class와 record class, 그리고 compact constructor 개요지금 회사에서 kotlin만 사용하던 나에게 다시 Java를 사용할 수 있는 기회가 찾아왔습니다. 뭐든지 역시 실제로 업무에서 사용하는 것 만큼 그 기술에 대해서 공부할 수 있는 좋은 동기부여는 없는것 같다라는 생각이 들었습니다. 소식으로만 접하던 Java의 변화에 대해서 실제 업무에서 쓰면서 그 가치를 제대로 느껴볼 수 있었습니다.오늘 알아볼 내용은 Java의 record keyword 입니다. record keyword는 무엇이고 어디에 사용할 수 있고 등의 내용을 함께 알아보도록 하겠습니다.immutable class (불변 클래스) 란 ?한번 값을 설정하고 나면 수정할 수 없도록 클래스 instance를 생성하는 것을 immutable class 라고 일반적으로 말합니다. 특별한 이유가 없다면.. 2024. 11. 25. [Security-OAuth2] Authorization Code Flow도 ID / Password를 입력하는데 Password Grant만 안전하지 않다고 하나요 ? 개요OAuth2의 인증 방식중 Password Credentials 라는 것이 있습니다. 이는 ID와 Password를 입력하여 Access Token을 얻어서 Resource Server에 접근할 수 있는 메커니즘을 가진 인증 방식입니다. 그런데 이 방식은 취약한 방법으로 더이상 OAuth2에서는 권장하지 않는 방식입니다. 그리고 일반적으로 많이 사용하는 Authorization Code Flow 방식이 있습니다. 이는 인증을 한 후 Code를 통해서 Resource Server에 접근할 수 있도록 하는 인증 방식입니다. 이 또한 처음에 ID / Password를 입력받아서 인증하게됩니다.두개의 Type 모두 동일하게 유저는 ID와 Password를 입력하는데 왜 Authorization Code Fl.. 2024. 10. 1. Kotlin Coroutine에서의 TraceId는 어떻게 주입하나 ? - Context 전파와 MDCContext 코루틴을 사용하면서 발생하는 주요 문제 중 하나는 실행 컨텍스트의 전파입니다. 특히 분산 시스템에서 로깅과 추적을 위해 중요한 역할을 하는 traceId와 MDC(Mapped Diagnostic Context)의 사용이 이에 해당합니다. 이번 글에서는 코루틴 환경에서 traceId와 MDC를 어떻게 효과적으로 전파할 수 있는지 알아보겠습니다.요약traceId란 무엇이고 어떻게 활용할 수 있는가 ?traceId는 분산 시스템에서 요청을 추적하고 각 서비스간의 연관성을 식별하는 데 사용되는 유니크한 식별자ThreadLocal과 MDC(mapped diagnostic contexts)란 무엇인가?ThreadLocal은 자바에서 제공하는 클래스로, 각 쓰레드가 자신만의 데이터 복사본을 갖도록 해서, 쓰레드 사이.. 2024. 7. 8. [기타] 날짜와 시간 표현의 국제 표준인 ISO 8601에 대해서 자세히 알아보자. (RFC3339, ISO8601, JavaTime) 개요먼저 표준화라는것은 사물, 개념, 방법 및 절차 등에 대하여 합리적인 기준을 설정하여 그 기준에 맞추는 것을 말합니다. 표준이 필요한 이유는 생산, 소비, 서비스 등 다양한 분야에서 생산성과 경제성을 높이고자함입니다. 표준화가 되어있는 요소에 대해서는 재활용이 가능하고 서로 이해하는것도 좋습니다. 최근의 좋은 표준의 예시는 in/out port로써 C-Type으로 통일되어가고 있습니다. 기존에 각 제품마다 표준이 달라서 불편했던 생산과 소비에 이제 단일화된 표준으로 편리함을 제공해주고 있지요. 이것이 바로 표준화가 필요한 이유입니다.오늘은 날짜와 시간 표현의 국제 표준인 ISO 8601과 RFC 3339에 대해서 알아보는 시간을 가져보려고합니다. 인터넷 표준에 비추어 볼때 우리가 따라야하는 표준은 I.. 2024. 7. 2. [security] OAuth 2.0의 인가 스펙과 OIDC(OpenID Connect)의 인증 스펙에 대해서 알아봅시다 개요안녕하세요. 오늘은 OIDC(OpenID Connect)에 대해서 자세히 알아보는 시간을 가져보도록 하겠습니다. 다들 OAuth2에 대해서는 아실것 같습니다. 잘 모르시는 분들은 [OAuth2] OAuth2 개론 - 개요와 Authorization Code Flow를 통해서 먼저 보고 오시는것을 추천드립니다. OAuth2는 HTTP 기반에서의 권한 부여(Authorizaiton)를 위한 업계 표준 프로토콜입니다. OIDC는 OAuth2의 확장중 하나로써 인증(Authentication)에 대한 프로토콜입니다.오늘은 인증과 인가의 차이부터 OIDC까지 알아보도록 하겠습니다.요약인증과 인가의 차이인증(Authentication): 사용자의 신원을 확인하는 과정입니다. 로그인과 같은 방식으로 사용자가 누구.. 2024. 6. 19. [Security] OAuth 2 Extension, Proof Key of Code Exchange(PKCE)에 대해서 알아보자 개요안녕하세요. 이전 포스팅 [OAuth2] OAuth2 개론 - 개요와 Authorization Code Flow을 통해서 OAuth2 개론을 알아보았습니다. OAuth2는 http 기반에서의 인증의 표준으로써 안전하게 토큰을 발급하고 이를 통해서 인증(Authentication)된 유저만 접근할 수 있도록 할 수 있습니다.하지만 기본 OAuth2는 네이티브 앱 또는 SPA 웹을 사용할 경우 authorization code interception attack을 당할 수 있습니다. 이 공격을 당하면 본인이 아닌 다른 유저가 token을 발급받을 수 있게됩니다. 따라서 이를 방지하기 위해서 OAuth 2.1의 업데이트의 하나로 Proof Key of Code Exchange(PKCE)가 있습니다.오늘은 .. 2024. 6. 9. [Network] HTTP Keep-Alive VS TCP Keep-Alive 제대로 알기 안녕하세요. 지난 시간에 Apache HttpClient 코드를 분석하면서 Network에 대해서 훑어보는 시간을 가져보았었습니다. 그러면서 Keep-Alive에 대해서 간단히 짚고 넘어갔었는데요. 오늘은 이 Keep-Alive에 대해서 헷갈릴 수 있는 부분들을 정리해보도록 하겠습니다.개요Keep-Alive는 Connection을 유지하기 위한 메커니즘입니다. TCP와 Http 모두 Keep-Alive로 Connection을 유지합니다. 둘을 햇갈릴 수 있습니다. 하지만 이 두 Keep-Alive는 완전 다르기 때문에 구분해서 알아둘 필요가 있습니다.Connection은 너무 오래유지하는 것도 너무 짧게 유지하는것도 모두 리소스적인 낭비로 이어질 수 있습니다. 너무 오래 유지하게 되면 더 이상 사용하지 .. 2024. 6. 2. 이전 1 2 3 4 ··· 23 다음