2023-10-04-TIL

Today I Learned

Kubernetes Books

  • https://www.practical-devsecops.com/best-kubernetes-books/
  • https://www.knowledgehut.com/blog/devops/kubernetes-books

Go pprof

  • https://go.dev/blog/pprof
  • https://pkg.go.dev/net/http/pprof
  • https://medium.com/@luanrubensf/heap-dump-in-go-using-pprof-ae9837e05419
  • https://pangyoalto.com/go-using-pprof-for-profiing/
  • https://www.freecodecamp.org/news/how-i-investigated-memory-leaks-in-go-using-pprof-on-a-large-codebase-4bec4325e192/
  • https://go.dev/src/runtime/heapdump.go
  • https://www.nylas.com/blog/finding-memory-leak-in-go-service-dev/

Why Use JPA @Size Annotation Instead of DB Exception?

DB에 데이터를 삽입하거나 업데이트할 때 데이터베이스 무결성 제약 조건이 위반되면 데이터베이스에서 오류가 발생할 것입니다. 그러나 @Size와 같은 JPA의 유효성 검사 어노테이션을 사용하는 이유는 다음과 같습니다:

사전 유효성 검사 (Pre-Validation): JPA 유효성 검사 어노테이션을 사용하면 애플리케이션 레벨에서 데이터의 유효성을 사전에 검사할 수 있습니다. 이로 인해 데이터베이스 쿼리를 실행하기 전에 무결성 오류를 방지할 수 있습니다. 데이터베이스에서 오류가 발생하면 롤백이 발생할 수 있고, 이로 인해 데이터의 무결성이 깨질 수 있습니다. JPA 유효성 검사는 이러한 문제를 미리 방지하고 오류가 데이터베이스까지 전파되지 않도록 도와줍니다.

사용자 피드백: JPA 유효성 검사 어노테이션을 사용하면 사용자에게 데이터 입력 오류에 대한 명확한 피드백을 제공할 수 있습니다. 데이터베이스 오류는 종종 애플리케이션에서는 추상적이거나 이해하기 어려울 수 있으며, 사용자가 이해하기 어려울 수 있습니다. 그러나 애플리케이션에서 JPA 예외를 적절히 처리하고 사용자에게 오류 메시지를 제공하면 사용자가 오류를 이해하고 수정할 수 있도록 도와줍니다.

애플리케이션 로직 분리: 데이터 유효성 검사를 애플리케이션 레벨에서 수행하면 비즈니스 로직과 데이터 유효성 검사를 분리할 수 있습니다. 이렇게 하면 데이터 유효성 검사 규칙을 중앙 집중적으로 관리하고 재사용할 수 있으며, 유지보수가 더 쉬워집니다.

클라이언트 측 유효성 검사: JPA 유효성 검사 어노테이션은 클라이언트 측에서도 사용될 수 있으며, 입력 양식을 제한하거나 사용자에게 오류 메시지를 표시하는 데 도움이 됩니다. 이것은 사용자 경험을 향상시키는 데 도움이 됩니다.

요약하면, JPA 유효성 검사 어노테이션을 사용하면 데이터베이스 무결성을 유지하고 오류를 사전에 방지하며 사용자 피드백을 제공하고 애플리케이션 로직을 분리할 수 있습니다. 이러한 이점은 애플리케이션의 안정성과 사용자 경험을 향상시키는 데 도움이 됩니다.
  • https://www.baeldung.com/jpa-size-length-column-differences

What is Enrich?

  • https://www.enterpriseintegrationpatterns.com/patterns/messaging/DataEnricher.html
  • https://medium.com/javarevisited/chain-of-responsibility-pattern-in-spring-application-f79b35f341e5
  • https://www.baeldung.com/chain-of-responsibility-pattern
  • https://stackoverflow.com/questions/28651751/pattern-for-filtering-and-enriching-objects
  • https://docs.spring.io/spring-integration/docs/current/reference/html/content-enrichment.html
  • https://docs.spring.io/spring-integration/docs/current/reference/html/content-enrichment.html