콘텐츠로 이동

2023 06 28

2023-06-28

NoClassDefFoundError: scoverage/Invoker$

  • scoverage
    • 스칼라 코드 커버리지 툴
    • 스칼라 코드를 컴파일 타임에 분석하고 어디가 테스트 시간에 훑고 지나갔는지 검증
    • statement, branch, expression 기반 분석
    • ScalaTest, specs2 와 호환이 좋음
    • HTML, XML 등으로 리포트 작성해줌
    • SBT, CI/CD로 모니터링 하세요

SELECT + INSERT 꼭 묶어야하나?

  • Select 된 정보가 insert 할 때 사용이된다면 하나로 묶는게 좋아
  • 데이터 일관성이 유지되고, failure/success가 한번에 관리되는게 무조건 좋긴하거든
    • 혹시 모를 데이터 일관성 깨지는거 해결해야지
  • 그니까 트랜잭션을 원자성 관점에서만 보지말고 아래 3가지를 다 생각하고 검토해보자
    1. Data Integrity
      • 데이터가 일관성이 있어야해
      • Read/Write가 일관성있는 상태에서 일어날 수 있도록 보장해보자
    2. Concurrency Issue
      • 트랜잭션은 isolation을 제공해줘
        • 비동기로 여러 오퍼레이션이 일어나는 걸 특히 더 잘 제어해주지
      • 트랜잭션 없이는 Race Condition도 보다 일어나기 좋아
      • 동시성 이슈까지 신경쓰고 싶지않다면 깝치지 말고 트랜잭션으로 묶어
    3. Error handling & rollback
      • 당연한거지만, 트랜잭션은 이걸 잘 관리해주자나