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가지를 다 생각하고 검토해보자
- Data Integrity
- 데이터가 일관성이 있어야해
- Read/Write가 일관성있는 상태에서 일어날 수 있도록 보장해보자
- Concurrency Issue
- 트랜잭션은 isolation을 제공해줘
- 비동기로 여러 오퍼레이션이 일어나는 걸 특히 더 잘 제어해주지
- 트랜잭션 없이는 Race Condition도 보다 일어나기 좋아
- 동시성 이슈까지 신경쓰고 싶지않다면 깝치지 말고 트랜잭션으로 묶어
- Error handling & rollback
- 당연한거지만, 트랜잭션은 이걸 잘 관리해주자나