전체 글214 [DynamoDB] 개념 및 사용 방법 아마존 DynamoDB는 key-value 및 document 자료 구조를 지원하는 NoSQL 데이터베이스이며, AWS에서 제공하고 있다.DynamoDB는 다이나모라는 스토리지 시스템의 이름에서 파생된 유사 데이터 모델을 노출하지만 기반이 되는 구현체는 다르다. 다이나모 스토리지란?더보기다이나모 스토리지: 아마존의 고가용성 키-값 저장소 시스템으로 다이나모DB의 서비스 기반특징- 높은 수준의 가용성 제공- SSD 스토리지에 저장- 지리적으로 나누어진 데이터센터에 분산저장- 대규모 성능 제공- 거의 무제한의 처리량 및 스토리지 제공 여기까지가 위키에 나와있는 내용 중 간단한 내용이며, 아래에서 몇가지 개념적인 내용을 살펴보려고 한다. 1. 소개 (Amazon DynamoDB 홈페이지 자료)작동 방식- 모든.. 2025. 2. 8. [이펙티브 코틀린] 아이템32: 추상화 규약을 지켜라 본 챕터는 '규약은 개발자들의 단순한 합의' 라는 내용으로 시작한다.규약이란 것은 한쪽이 위반할 수도 있으며, 기술적으로는 모든 부분에서 규약 위반이 발생할 수도 있다. 규약을 위반한 코드는 시한 폭탄을 설치한 것과 같으며, 코드가 작동을 멈췄을 때 문제가 된다. 상속된 규약규약을 반드시 지켜야 하는 경우는 1) 클래스 상속, 2) 다른 라이브러리의 인터페이스 구현을 하게되는 시점이다. 예를 들어 모든 클래스는 equals, hashCode 메서드를 가진 Any 클래스를 상속 받는데, 이러한 메서드는 지켜야하는 규약을 가지고 있다.만약 hashCode가 제대로 구현되지 않으면, HashSet과 함께 사용할 때 제대로 동작하지 않는다. 아래 코드에서 보여주는 바는 equals가 제대로 구현되지 않았을 경우.. 2025. 2. 3. [이펙티브 코틀린] 아이템29: 외부 API를 랩(wrap)해서 사용하라 이번 챕터는 코드와 관련된 기술적인 내용 보다는 좋은 코드에 대한 가이드가 간략하게 나와 있는 것 같다. API가 불안정한 이유에는 여러가지가 있을 것이고, 이때 불안정한 API를 과도하게 사용하는 것은 위험한 일이다.만약 이러한 경우 불가피하게 API를 활용해야 한다면, 최대한 API를 로직과 분리시키는 것이 좋다.많은 프로젝트가 잠재적으로 불안정하다고 판단되는 외부 라이브러리 API를 랩(wrap)해서 사용한다. 랩해서 사용 했을 때의 장점 1. 문제가 있다면 래퍼(wrapper)만 변경하면 되므로, API 변경에 쉽게 대응 가능하다. (캡슐화하여 사용하기 때문)2. 프로젝트의 스타일에 맞춰 API 형태 조정이 가능하다. (직렬화 등을 래퍼에서 처리 가능)3. 특정 라이브러리에 문제 발생 시 래퍼.. 2025. 1. 21. [이펙티브 코틀린] 아이템19: knowledge를 반복하여 사용하지 말라 이 책의 저자가 생각하는 프로그래밍의 가장 큰 규칙은 아래와 같다.프로젝트에서 이미 있던 코드를 복사해서 붙여넣고 있다면, 무언가가 잘못된 것이다. 이번 챕터의 제목인 'knowledge를 반복하여 사용하지 말라'는 위의 내용을 저자의 방식으로 표현한 것이다.위 규칙은 DRY 규칙, WET 안티패턴, SSOT 등으로도 불린다.위 규칙을 확실하게 적용하려면, 언제 왜 이 이야기가 나오는지 이해해야한다. knowledge프로그래밍에서 knowledge 는 넓은 의미로 '의도적 정보'를 뜻한다.프로젝트를 진행할 때 정의한 모든 것이 knowledge가 될 수 있다. 예를 들어 알고리즘의 작동 방식, UI 형태, 우리가 원하는 결과 등 모두 의도적 정보이자 knowledge 이다. 우리 프로그램에서 중요한 kn.. 2025. 1. 15. [이펙티브 코틀린] 아이템17: 이름 있는 아규먼트를 사용하라 코드에서 아규먼트의 의미가 명확하지 않은 경우가 있다. 아래 코드에서 | 가 의미하는 바에 대하여 논란이 없을까?val text = (1..10).joinToString("|")만약 joinToString에 대하여 잘 알고 있다면, 구분자(seperator)를 의미한다는 것을 알 수 있겠지만모른다면, 이를 접두사(prefix)나 그 외 다른 것으로 생각 할 수도 있다. 따라서 명확하지 않을 수 있는 문제가 있다.이 문제를 해결하기 위해서는 아래은 방법으로 수정이 가능하다.// 아규먼트를 사용하는 방법val text = (1..10).joinToString(seperator = "|")// 변수를 사용하여 의미를 명확하게 하는 방법 val seperator = "|"val text = (1..10).joi.. 2025. 1. 8. [이펙티브 코틀린] 아이템7: 결과 부족이 발생할 경우 null 또는 Failure를 사용하라 핵심 개념문제 상황우리가 구현한 함수가 항상 원하는 결과를 준다면 좋겠지만 그렇지 않은 경우도 있을 것이다.책에서 들었던 몇가지 예시는 아래와 같다.서버에서 데이터를 가져오려고 했지만 실패조건에 맞는 데이터를 찾지 못했거나 형식이 맞지 않음이 경우를 처리하는 방법은 두 가지가 있다.결과 부족을 처리하는 두 가지 방법1. null 또는 Failure 반환null: 결과가 없음을 나타내기 위해 간단하게 null을 리턴한다.Failure: sealed class를 사용해 실패 상태를 명확하게 표현한다.예를 들어 Success와 Failure 클래스를 사용하여 성공과 실패를 구분한다.장점: Failure를 사용하면 실패 원인을 담을 수 있고, when을 통해 명확하게 상태를 분리하여 처리할 수 있다.단점: nu.. 2024. 12. 18. 이전 1 2 3 4 ··· 36 다음