일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- Java
- RESTfull API
- 로그인 인증 흐름
- spring
- 작업명중복
- 토큰기반 인증
- ORM
- 프레젠테이션 계층
- 어노테이션
- IPC
- 로그인/로그아웃
- 세션기반 인증
- http
- 스프링 부트 테스트
- ./gr
- 퍼시스턴스 계층
- @temproal
- 비동기
- formmatted
- ./gradlew docker
- 스프링부트
- 스프링부트 계층구조
- JWT
- java I/O
- 스프링
- 스프링부트 구조
- 동기
- 비즈니스 계층
- JPA
- MSA
- Today
- Total
목록전체 글 (74)
[DEV] J-Jay
예외(Exception)프로그램 실행시, 어떤 원인으로 인해 비정상적인 동작을 일으키며 프로그램이 종료되는 상황이 일어 났을때대부분 사람들은 프로그램이 오류가 발생했다고 생각한다. (어떤 오류인지는 관심 없다) 하지만 나는 개발자니까 개발자 기준에서,오류는 크게 두가지 종류가 있다. 컴파일 할 때 발생할 수 있는 컴파일 에러, 실행 중 발생되는 런타임 에러 컴파일 에러는 우리가 잡기가 쉽지만(코딩할떄 나오니까) 런타임 오류는 실행 중에 발생하기에 잡기가 어렵다.그래서 여기선 런타임 에러에 대해서 깊게 살펴보겠다. 런타임 에러Java에서 런타임 오류는 두종류로 보고있다. 에러(Error)와 예외(Exception)이 두개의 차이를 알아보자.에러는 프로그램이 코드로 복구될 수 없는 오류를 의미하고, 예외는 ..
내부 클래스 (Inner Class) 내부 클래스(inner class)란 하나의 클래스 내부에 선언된 또 다른 클래스를 의미한다.보통 사용자 클래스 자료형이 필요하면, 메인 클래스 외부에 선언하거나, 따로 독립적인 클래스 파일을 만들어 불러와 사용해 왔다. 내부 클래스는 내부에 정의된다는 점을 제외하고는 일반적인 클래스와 다르지 않다. 우리가 어느 클래스에 변수나 상수가 필요하다면 클래스 멤버로서 클래스 내에서 선언하여 사용해 왔듯이, 선언 주체를 변수에서 클래스로 바꾼다면 그것이 내부 클래스인 것이다. 이처럼 내부 클래스는 보통 두 클래스가 서로 긴밀한 관계가 있거나, 하나의 클래스또는 메소드에서만 사용되는 클래스일 때 이용되는 기법이라고 보면 된다.※ 내부(inner) 클래스는 중첩(nested) ..
다형성이란?프로그램 언어의 각 요소들(상수, 변수, 식, 오브젝트, 함수, 메소드 등)이 다양한 자료형(type)에 속하는 것이 허가되는 성질을 가리킨다. (by.위키피디아) 다형성 예시 UserRepository라는 사용자의 데이터에 대한 인터페이스가 있고,이것의 DB를 초기에는 MySQL로 구현했다고 가정하자.근데 배포하기 하루전 DB를 Oracle로 바꾸는 일이 생겼다고 할때처음부터 다시 개발하지 뭐... 이런상황에서 사용할 수 있는게 다형성이다.interface UserRepository { public createUser() public updateUser() public deleteUser() public getUser()} MySqlclass UserRepositoryMySQ..
상속(Inheritance)자바에서 상속이란 기존의 클래스를 재활용하여 새로운 클래스를 작성하는 자바의 문법 요소이다.상속은 상위 클래스와 하위 클래스로 나누어 상위 클래스의 멤버(필드, 메서드, 이너 클래스)를 하위 클래스와 공유하는 것 부모와 자식으로 생각하면, 자식은 부모의 유전자를 물려받듯, 하위 클래스는 상위 클래스의 모든 멤버를 상속받게 된다.하지만, 모든 멤버를 상속받더라도 항상 직접적으로 접근할 수 있는 것은 아니다. 상위 클래스의 필드나 메서드의 접근 제한자가 private이면, 같은 패키지일 지라도 하위 클래스는 해당 필드나 메서드에 직접적으로 접근하지 못한다. 상위 클래스의 필드나 메서드의 접근 제한자가 default이면, 상위 클래스와 하위 클래스가 다른 패키지일 때 하위 클래스는 ..
IPC(Inter Process Commuication) Async(비동기) 패턴의 한계→ 특정 상황들에서는 필연적으로 2번이상 데이터를 받을 가능성이 있다. Async(비동기) 통신을 활용해서 중요한 비즈니스를 하기는 어려울까? Q. Async에서는 2번이상 수신되는 것을 해결하고 싶으며, Sync에서의 장점으로 설명되었던 중요한 비즈니스에서도 리소스 활용을 최적화 해서 사용하고 싶다면 어떤 방법이 있을까? A. 멱등성(Idemptotent)이 필요한 상황을 식별한다.멱등성(Idemptotent) 이란? → 특정 호출이 1번 혹은 여러번 호출되더라도 서버의 상태는 1번 호출된 것과 동일해야 한다는 특성이다. 일반적으로 Update, Delete 요청은 멱등성을 가지며, Create 요청은 멱..
IPC(Inter Process Commuication) Async(비동기) 패턴 → Queue를 활용하여 Produce, Consume 방식으로 데이터 통신 MQTT (Message Queuing Templemetry Transport) - Spec ↓ 기능↓ 쓰지 않음- 경량 메시징 프로톸로로서, IoT 경량화가 최대 목적인 프로토콜- Publish, Subscribe, Topic 사용AMQP (Advanced Message Queuing Protocol)- 엔터프라이즈 레벨의 메시징 시스템을 위한 프로토콜- MQTT 개념 외에도, Exchange, Binding 등 개념 추가- Rabbit MQ, Active MQ... Publisher(발행자)는 Exchange(Routing 역할)만 바라본다..
IPC(Inter Process Commuication) Sync(동기) 패턴 HTTPOSI 7 응용 계층의 통신 프로토콜로서, L4 계층에서는 TCP 방식을 활용하는 프로토콜여러가지 종류의 메서드가 존재하지만 일반적으로 4개의 메서드를 활용한다. (GET, POST, PUT, DELETE)gRPC (google Remote Procedure Call)Protocol Buffer 라는 것을 기반으로 하는 원격 프로시저 호출 프로엠워크일반적으로 Server to Server Call 경우에 한해 사용빠르지만, 번거로운 작업과 위험이 수반 (ex stub파일 생성, type을 하나만 잘못 넣어도 전체 error)
IPC(Inter Process Commuication) 전 사전 지식 프로세스 간 통신 → 서비스 간 통신 → MSA IPC를 이용하기 위해서는 Network 통신이 어떻게 이루어지는지 이해가 필요하다.→ OSI 7 계층(Open Systems Interconnection), TCP/IP 모델OSI 7계층(Open Systems Interconnection), TCP/IP 모델 들은 한 곳에서 다른 곳으로 통신이 어떻게 되는지설명하는 모델이다. 논리적으로 이해 → TCP/IP (4 계층) 모델ISO 표준 → OSI 7계층 모델 IPC(Inter Process Commuication) 방식 일반적인 IPC 는 크게 2가지로 나눌 수 있다.Sync(동기) 방식 (Restful, Http, gRPC)→ 적..
"분해" 로 인해 생기는 문제 해결 방법 문제1: 수 많은 서버와 수 많은 서비스들은 어떻게 배포하고 관리 할 것인가?해결1: Container로 관리 → Docekr문제2: 그럼 많은 컨테이너는 또 어떻게 관리할 것인가?해결2: Container Ochestration로 관리 → K8S, docker-compose(경량)문제3: MSA환경에서의 모니터링(로깅, 메트릭, 트레이싱, 서비스 메시)은 어떻게 할 것인가?해결3(로깅)- 수많은 서버(IDC, CLoud 내의 수많은 서비스들의 로그들을 적절히 필터링 하여 누락없이 로그 저장소까지 전송- 수 많은 로그들을 적절히 인덱싱 하여, 필요 시 빠르게 다양한 조건으로 검색→ EFK, ELK해결3(메트릭, 얼럿)- 수 많은 서버(IDC, Cloud) 내의, ..
1. 모듈간 통신 → 서비스(프로세스) 간 통신 (개발자 입장) Method(Function) Call을 해서 → Network(http, grpc, ... ) 통신을 한다는 과정이라고 했을때,일반적인 상황에서는 모놀리식이든, MSA든 전혀 차이가 없다. 하지만! 항상 모든 이슈는 문제(장애) 상황에서 발생한다. 발생 가능한 문제들요청에 대한 처리량(throughput)이 급격히 하락↓→ 필요한 컴퓨팅 자원의 최적화 어려움 → 성능 하락 or 낭비 가능성http,grpc 프로토콜 상의 이슈로 문제가 생기는 경우 디버깅이 어려움→ Connection Pool 관리→ 한정된 리소스로인한 JVM 최적화가 더 어려워짐으로써 의도치 않은 결과 발생 가능성 ↑ → http, grpc 프로토콜에 디펜던시가 있는 지식..