본문 바로가기

프로젝트 & TIL/일별 공부 기록 (백엔드 스쿨)

95일차 - 다이나모 DB

다이나모 DB

- 몽고 DB 보다 더 단순하지만, 확장성과 안정성이 뛰어나다.

- 서브 DB로 쓰기 좋다.

- 급작스럽게 대량으로 발생하는 데이터를 저장하는 1차 저장소, 혹은 대량 데이터 저장소로 쓸 수 있다.

- 데이터 유실 가능성이 0에 가깝다.


의존성 추가

- 기본 의존성은 Spring Devtools, Spring Web, Lombok을 추가했다. (Devtools는 호환성 문제로 제거됨. 다음 포스팅 참고)

dependencies {
    
    ...

    implementation 'software.amazon.awssdk:dynamodb:2.20.98'
    implementation 'software.amazon.awssdk:dynamodb-enhanced:2.20.98'
}

 

application-secret.yml

aws:
  accessKeyId: {accessKeyId}
  secretKey: {secretKey}
  region: ap-northeast-2

Post 엔티티 도입

- 다이나모 DB 사용을 위한 준비로써 구현했다.

 

Post

@DynamoDbBean
@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Post {

    private String id;
    private String createDate;
    private String subject;

    @DynamoDbPartitionKey
    public String getId() {
        return id;
    }

}

 

PostRepository

@Repository
public class PostRepository {

    public Post save(Post post) {
        post.setId(UUID.randomUUID().toString());
        post.setCreateDate(LocalDateTime.now().toString());

        return post;
    }
    
}

 

PostService

@Service
@RequiredArgsConstructor
public class PostService {

    private final PostRepository postRepository;

    public Post write(String subject) {
        return postRepository.save(Post.builder()
                .subject(subject)
                .build());
    }
    
}

 

PostController

@Controller
@RequiredArgsConstructor
@RequestMapping("/posts")
public class PostController {

    private final PostService postService;

    @GetMapping("/create")
    @ResponseBody
    public Post create() {
        return postService.write("제목");
    }
    
}