개인 공부
-
동시성 제어 [2] DB Lock개인 공부/spring 2024. 8. 5. 19:53
🔴 분산 Lock지난 번 글에 이어 동시성 문제를 해결해보려고 한다.java 동시성 제어 [1]java 처리분산된 여러 서버에서 서버마다 락을 처리해놔도 여러 서버가 존재한다면 동시성은 해결될 수 없다. 그래서 여러 서버가 DB 한곳으로 요청할때 DB에서 락을 걸어 동시성 이슈를 해결하는 방법에 대해 알아보자.🟠 DB Lock (비관적 락)데이터를 저장하고 있다면 당연히 DB를 사용하고 있을것이다. RDB를 사용하고 있는 경우 query를 통해 Lock을 걸어줄 수 있다.여기서 비관적 락이란 트랜잭션이 발생하면 DB에서 락을 걸어서 대기시키는 것이다.🟢 Service@Service@RequiredArgsConstructor@Transactional(readOnly = true)public class..
-
동시성 제어 [1] java 처리개인 공부/spring 2024. 8. 5. 19:51
🔴 동시성 제어란?회사 공고나 백엔드 개발자로써 성장하다 보면 가장 많이 듣게되는 부분 중 하나가 동시성 제어다. 특히 자바 개발자는 스프링의 멀티 쓰레드 특성상 해당 부분을 해결할 능력을 갖추는 것이 필수이다.여러 쓰레드가 동시에 요청을 처리하는 프로세스를 순서대로 처리되도록 개발자가 처리해주면 되는 것이다.🟠 고려할 점동시성을 처리하기 전에 환경, 프로젝트 규모를 먼저 고려해야 한다. 작은 프로젝트(=1개의 서버만 운영)작은 프로젝트라면 하나의 서버에서 처리하고 있기 때문에 서버 내에서 java의 Lock이나 Synchronize를 통해 처리할 수 있다.큰 프로젝트(=여러개의 서버 운영 =분산 시스템)프로젝트 당 쓰레드도 여러개지만 서버 자체도 여러개라 Lock을 처리해줄 외부 설정이 필요함. D..
-
Java17을 왜 고려해야 할까? (Java version(8~17) 별 특징 정리)개인 공부/java 2024. 8. 5. 19:42
Spring boot 3.0 부터는 java17부터 지원하고 있기 때문에 새로운 스프링부트를 사용하는 분들은 무조건 17 이상을 도입해야 한다!난 정리되어 있는 글들을 참고하여 정리한 글이기 때문에 이 보다 더 많은 내용이 추가되었을 것이다. 더 자세한 내용을 원하시는 분들은 다른 글을 참고하시면 좋을 것 같다.😂 Java11은 왜...Java8과 경쟁상대로 가장 많이 언급되었던 Java version은 11이였다. 그 이유는 우선 LTS였기 때문이였는데. Oracle 사에서 Java8을 사용한 레거시 프로젝트들(현재도 서비스하고 있기 때문에 새로운 기술에 계속해서 대응해줘야함!)이 너무 많음을 고려하여 Java8이 Java11보다 더 긴 지원기간을 갖게되었다.OracleJava 8 : 2030년 12..
-
final과 추상화, interface개인 공부/java 2021. 7. 6. 07:34
final 이란 final은 더 이상 확장이 불가능함을 알리는 예약어이다. 적용할 수 있는 범위는 변수, 메서드, 클래스이다. 변수에서 final 변수에 final을 적용시키면 프로그램이 종료되어질 때까지 값을 변경하지 못하는 상수화가 된다. 그리고 static 예약어와 함께 정적화하여 특정 클래스의 객체가 여러개 생성되는 것을 방지하는 것이 보통이다. 또한 상수화가 되므로 변수의 이름은 대문자로 하는것도 관례이다. 하지만 웹에서 개발을 할때 싱글톤으로 개발하기 위해 변수명에 final을 붙여 생성자를 생성하는 경우가 있다. 그때는 static이나 대문자로 표시하지 않고 'private final 변수명'으로 생성하는 경우도 있다. 메서드 final 메서드의 final은 더이상 오버라이드를..
-
API Gateway Service의 개념과 Spring Netflix Ribbon, Zuul개인 공부/MSA 2021. 7. 4. 10:32
API Gateway Service API Gateway Service란 사용자가 설정한 라우팅 설정에 따라서 각 EndPoint로 client 대신 요청하고 응답을 받은 것을 다시 client로 돌려준다. EndPoint란 소프트웨어나 제품에 최종 목적지인 client를 가리키며 PC, 노트북, 핸드폰, 태블릿 등의 디바이스들을 말함. 외부의 요청을 단일화하여 사용할 수 있도록 해준다. 클라이언트와 서버 사이의 프록시 역할로 시스템의 내부 구조를 숨기고 반환하는 데이터는 적절한 구조로 변경하여 반환할 수 있다. API Gateway Service를 사용하는 이유 인증 및 권한 부여 서비스 검색 통합 마이크로 서비스 검색 응답 캐싱 정책, 회로 차단기 및 QoS 다시 시도 마이크로 서비스에 문제가 생겼을..
-
Spring Cloud Netflix Eureka개인 공부/MSA 2021. 7. 3. 21:47
Spring Cloud Netflix Eureka Spring Cloud Netflix Eureka는 Service Discovery를 수행해주는 제품이다. Service Discovery란 외부에서 마이크로 서비스의 위치를 찾아주기 위한 기능을 말하고 Netflix Eureka는 이를 위해 서비스들을 등록하고 검색하는 기능을 제공한다. intellij를 통해 예제 만들기 Eureka Server 생성 프로젝트 생성 이때 spring boot의 버전은 spring cloud가 지원하는 버전으로 pom이나 gradle에서 변경해줘야함. 서버 설정 Eureka 서버로 설정하기 위해 내장 was가 실행되는 코드에 @EnableEurekaServer 어노테이션을 추가한다. yml 설정 실행 실행 후 실제 접속하..
-
Microservice와 SpringColud개인 공부/MSA 2021. 7. 2. 21:33
Cloud Native Architecture란 확장 가능한 아키텍쳐 수평적 확장에 유연 확장된 서버로 시스템의 부하 분산 서비스 단위의 패키지 (=컨테이너 기반) 서비스 단위로 모니터링 가능 탄력적 아키텍쳐 CI/CD를 통해 서비스 생성-통합-배포의 자동화롴 비지니스 환경 변화에 대한 대응 시간 단축 작게 분리되어진 분할된 서비스 구조(= 각각의 서비스는 서로의 영향력을 최소화 해야함) 각각의 통신에 대해 서비스는 무상태를 유지 각각의 서비스 관리를 자동화 장애 격리 특정 서비스에 오류가 발생해도 다른 서비스에는 영향을 주지 않음 Cloud Native Application Cloud Native Architecture에 의해 설계된 프로그램을 의미하며 구현 형태가 존재한다. Microservice로 ..
-
Jira개인 공부 2021. 7. 1. 16:31
Jira란 jira란 Atlassian 사에서 개발한 이슈 추적 제품이며 버그 추적, 이슈 추적, 프로젝트 관리 기능을 제공하는 소프트웨어이다. 출처 위키백과 지라는 애자일 개발방식에 가장 적당한 소프트웨어라는 말이 많았다. 애자일 방식은 소프트웨어 공학 중 하나로 공부해서 나중에 정리해놔야겠다! 하지만 내가 지금 이해하고 있는 개념은 기존 소프트웨어 공학과는 차별화되어 사용자의 변하는 요구사항에 맞추어 개발이 진행되는 공학 방법으로 알고 있다. Jira를 사용하기 위한 준비단계 개인적으로 이번 글에서는 Jira를 사용하여 Git-hub에 연동하며 intellij까지 연동하여 사용하려고 한다. 여기서 변동 가능한 사항은 git 저장소와 ide는 사용자 상황에 맞게 변경하여 진행하면 될것 같다. 또한 gi..