LOCK 이란?트랜잭션 처리의 순서를 보장하기 위한 방법DB가 처리하는 가장 작은 단위트랜잭션이 완벽하게 처리될 때 까지 다른 트랜잭션 개입을 막아주는 방식LOCK 의 종류Shared Lock : S-LOCK 이라고 보통 얘기한다.Row-Level Lock 중 하나이다.데이터 Read 에 대한 LockS-LOCK을 사용하는 쿼리 끼리는 같은 row에 접근이 가능하다.Exclusive Lock : X-LOCK 이라고 한다.Row-Level Lock 중 하나데이터 Write 에 대한 Lock트랜잭션 완료 될때 까지 유지되며 Lock이 해제 될 때 까지 다른 트랜잭션은 해당 리소스에 접근 불가능SELECT...FOR UPDATE, INSERT등 수정 쿼리를 날릴 때 ROW 에 걸리는 LOCKS-LOCK, X-..
EazyRandom 으로 테스트 객체 랜덤으로 생성하기 Easy Random 이란 자바 객체를 랜덤으로 만들어주는 라이브러리 이다. You can think of it as an ObjectMoter for the JVM이라고 설명한다. 여기서 ObjectMother 은 한마디로 테스트 할때 예시 객체를 만들게 도와주는 객체의 하나라고 말할 수 있다. EazyRandom 깃허브 공식 사이트에 가면 더 많은 정보를 제공한다 URL : 깃허브 Seed EazyRandom 은 Seed라는 값을 통해서 랜덤 값을 생성한다. 즉 시드값은 랜덤 값 생성의 기준이 된다. 동일한 시드값을 가지고 있으면 항상 동일한 결과가 나오게 된다. 위를 보면 Default Seed 값이 잡혀있다. 자 그러면 이제 EazyRando..
Jenkins Github 연동 Jenkins를 사용해서 CI/CD 환경을 구축하기 전에 젠킨스와 Github를 연동하는 것을 먼저 해보고자 한다. 이는 다음 단계에서 Github 에서 Push가 발생하면 이벤트를 캐치해서 CI/CD를 하기 위한 사전 작업 이기도 하다. Github와 연동해서 Jenkins에서 build now를 누르면, 특정 repo 에서 코드를 가져와 빌드하는 것 까지 해보려고 한다. Github 토큰 발급 Github에 로그인 하고 아래와 같이 Github 토큰을 발급 하자. Settings -> Developer Settings > Personal access tokens > Generate new token repo의 권한을 설정해 주자. 발급받은 Token을 복사해 놓아야 한..
배포전략(Rolling, Canary, Blue/Green) 최근에는 서비스를 작게 만들고(MSA) 더 자주 배포 하는 방식으로 진행되고 있다. 이러한 트렌드에 맞춰 서비스 배포 전략도 다양하게 개발되고 발전되어 왔다. 본 포스트에는 가장 대표적인 배포 전략 Rolling, Canary, Blue/Grren 에 대해 기록해 볼려고 한다. Rolling Rolling 배포는 서버를 한대 씩 구 버전에서 새버전으로 교체해가는 전략이다. 서비스 중인 서버 한대를 제외시키고 그 자리에 새 버전의 서버를 추가한다. 이렇게 구버전 에서 새버전으로 트래픽을 점진적으로 전환한다. 이와 같은 방식은 서버 수의 제약이 있을 경우 유용하나 배포 중 인스턴스의 수가 감소 되므로 서버 처리 용량을 미리 고려해야 한다. Blue..
Jenkins CI/CD, Pipeline 이해하기 개요 CI/CD 파이프라인 개념 이해 Jenkins 기본 개념에 대한 이해 Jenkins 토해 기본 배포 파이프라인 구축 CI/CD란 무엇인가? CI란? Continuous Integration을 말한다 -> 무엇을 통합한다. 기본적으로 코드 여러명의 많은 개발자들이 코드 베이스를 계속해서 통합하는 것 여러 개발자들의 코드를 각각 가능한 빠르게 배포하는 것을 의미한다. 코드를 통합한다는 것 이다. CD란? Continuous Delivery -> 무엇을 배달하다. 내부 사용자(QA, 마케터, 기확자등)든, 사용자들 서비스를 지속적으로 배달한다. 즉 코드 베이스가 항상 배포 가능한 상태를 유지하는 것을 의미한다. -> Continuous Deploymen..
비동기 프로그래밍 과 CompletableFuture 동기,비동기 프로그래밍을 설명해야한다면 항상 같이 따라오는게 논블로킹과 블로킹일 것이라고 생각한다. 이에대해 내가 알고있는 부분에 대해 기술하고 JAVA 1.8 부터 지원하는 CompletableFuture을 사용해 비동기, 논블로킹에 대해 기록할 예정이다. 블로킹, 논 블로킹 블로킹 이란 누군가의 행위로 인해 다른 누군가가 제한되거나 대기해야 하는 상태 논 블로킹 이란 누군가의 행위로 인해 다른 누군가가 제한되지 않거나 대기하지 않는 상태 동기 - 하나의 함수가 정해진 코드를 실행하는 과정에서, 다른 함수를 호출함으로써 제한되거나 대기하는 상태 비동기 - 하나의 함수가 정해진 코드를 실행하는 과정에서, 다른 함수를 호출하고도 제한되거나 대기하지 않는..
ELK Stack(ElasticSearch, Logstash, Kibana + Filebeat) 필자는 회사 프로젝트를 진행하면서 APM을 어플리케이션에 붙여서 모니터링을 진행해야 했기에 오픈 소스인 ELK Stack을 이용해 보았다. ELK Stack을 알아보기 전에 ElasticSearch에 대해 알아보자. ElasticSearch 란? ElasticSearch는 Apache Lucene 기반의 Java 오픈소스 분산형 RESTful 검색 및 분석 엔진 입니다. 방대한 양의 데이터에 대해 실시간으로 저장과 검색 및 분석등의 작업을 수행할 수 있습니다. 특히 정형데이터, 비정형 데이터, 지리 데이터등 모든 타입의 데이터를 처리할 수 있습니다. ElasticSearch는 JSON 문서로 데이터를 저장하기..
이번 글은 필자가 회사에서 가장 많이 쓰는 QueryDSL에 대해 기본적인 문법에 대해 코드로 정리하고 소개할려고 한다. Querydsl 의 기본문법 이번 글은 Querydsl의 기본 문법에 대해 글을 적어 볼려고 한다. 먼저 Querydsl과 JPQL을 비교해보겠다. Querydsl vs JPQL JPAQueryFactory qf; @Test public void startJPQL(){ // JPQL을 사용한 member1 찾기 String qlString = "select m from Member m " + "where m.username = :username"; Member findMember = em.createQuery(qlString, Member.class) .setParameter("use..
JPA를 사용하면서 영속성 컨텍스트에 대해 이해하지 못하면 항상 예기치 못한 사이드 이펙트를 만나곤 한다. 그래서 영속성 컨텍스트에 대해 공부하면서 간단히 정리해본 글이다. 클래스 수준 아키텍처 아래의 이미지는 JPA의 클래스 레벨 아키텍처 입니다. 여러가지 코어적인 JPA의 클래스와 인터페이스를 볼 수 있습니다. EntityManagerFactory - EntityManager 클래스의 팩토리 클래스입니다. 이 클래스로 EntityManager 클래스의 인스턴스를 생성하고 관리 EntityManager - 인터페이스 입니다. 객체에 대한 영속성 관리작업을 합니다. Query 인스턴스를 생성하는 팩토리 처럼 작동합니다. Entity - 영속 객체입니다. 이 객체의 스펙에 의해서 데이터베이스에 기록될 객체..
Auditing Entity를 생성 변경할 때 변경한 사람과 시간을 추적하고 싶으면? 등록일 수정일 등록자 수정자 스프링 데이터 JPA 사용 설정 @EnableJpaAuditing -> 스프링 부트 설정 클래스에 적용해야함 @EntityListeners(AuditingEntityListener.class) -> Entity에 적용 사용 어노테이션 @CreatedDate @LastModifiedDate @CreateBy @LastModifiedBy @EntityListeners(AuditingEntityListener.class) @MappedSuperClass @Getter public class BaseEntity{ @CreatedDate @Column(updatable = false) private ..
- Total
- Today
- Yesterday
- 데이터베이스
- spring mvc
- Index
- 영속성 컨텍스트
- TCP
- R-Tree
- jenkins
- 다운로드
- DispatcherServlet
- 스프링
- 논블로킹
- mysql
- java
- 쓰레드
- 네트워크
- 공간쿼리
- Excel
- lock
- db
- jpa
- 비동기
- oauth2
- thread
- spring
- database
- spring boot
- Spring Security
- 인덱스
- GIS
- github
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |