BackEnd6 마이크로 서비스 간 분산추적 with Zipkin 자동목차MSA 분산 추적위 같이 마이크로서비스가 여러개 있을 경우, 각 서비스들간에 호출 체인이 일어납니다.간단한 예로 이전 포스팅에서 통화 변환 서비스가 환율정보를 받아오기 위해서 환율 서비스의 API를 호출 했었죠.마이크로 서비스들이 많아지면 많아질수록 이런 호출체인은 더 복잡해지겠죠. 그럼 상황에서 문제가 발생하기 마련입니다.이렇게 발생하는 문제를 추적하고 분석할 수 있어야하는데 이를 위해 분산 추적을 사용합니다.이미지와 같이 모든 마이크로서비스의 모든 정보를 분산 추적 서버로 보냅니다.그리고 분산 추적 서버는 각 서비스에서 전송된 트레이스 데이터를 수집하고 이를 DB에 저장합니다.이 데이터는 서비스 간 호출 정보, 요청의 시작 시간과 종료 시간, 응답 시간, 서비스 간의 관계, 그리고 각 단계에서.. 2024. 10. 8. Spring Cloud로 MSA 구축해보기 자동목차본 포스팅을 하게 된 이유현재 많은 기업에서 MSA를 사용하고 있습니다.그렇기에 신입으로 취업하게 되면 막연하게 회사에 들어가서 학습하는 것보다는, "미리 공부를 하고 실무에 뛰어들면 업무에 원활하지 않을까?" 라는 생각이었고, 이를 위해 조만간 진행할 개인 프로젝트에서 MSA를 적용하여 구축해보자는 마음에 공부하게 되었습니다.MSAMSA(Microservice Architecture)는 애플리케이션을 여러 개의 독립적인 마이크로서비스로 나누어 개발하고 배포하는 아키텍처 스타일입니다.각 마이크로서비스는 하나의 기능에 집중하고, 다른 서비스들과 독립적으로 동작하며 독립적으로 배포될 수 있습니다. 마이크로서비스들은 서로 API나 메시지 큐를 통해 통신하며 각각의 서비스는 자신만의 데이터 저장소와 로직.. 2024. 9. 30. [Spring] OAuth Client로 네이버 로그인 구현하기 자동목차OAuth 2.0OAuth 2.0은 표준화된 규칙과 절차를 정의한 프로토콜입니다.애플리케이션 간의 인증 및 권한 부여를 위한 상호 작용을 명확하게 규정하고 클라이언트(사용자가 이용하는 서비스 애플리케이션)가 자원 소유자(사용자)의 자원에 접근할 수 있도록 허용하는 방법을 정의합니다.주로 간편 로그인을 할 때 사용됩니다.(ex. 카카오 로그인, 네이버 로그인 등)역할Resource Owner - 자원을 소유하고 있는 사람입니다. 서비스 애플리케이션을 사용하는 실제 사용자입니다.Client - 서비스 애플리케이션 서버입니다. 리소스 서버(구글, 네이버 등)로 Resource Owner의 인증 인가를 요청 하기때문에 리소스 서버의 입장에서 보는 관점으로 클라이언트입니다.Resource Server & .. 2024. 9. 3. API Versioning 자동목차API Versioning 의 필요성하위 호환성 유지API를 사용하는 사용자는 특정 API 인터페이스에 의존하게 됩니다. 만약 API가 변경되거나 새로운 기능이 추가되면서 기존의 인터페이스가 변경된다면 하위 호환성을 유지하지 않으면 기존 클라이언트에서 오류가 발생할 수 있습니다.버전 관리를 통해 이전 버전의 API를 유지하면서 새로운 기능을 추가한 버전을 제공할 수 있습니다.점진적인 기능 개선API는 시간이 지남에 따라 개선되고 확장됩니다. 새로운 기능을 추가하거나 성능을 개선하거나 보안을 강화하는 등의 작업이 필요할 때 버전 관리를 통해 단계적으로 새로운 버전을 릴리스할 수 있습니다. 이를 통해 클라이언트는 자신에게 필요한 시점에 새 버전을 선택적으로 사용할 수 있습니다.기존 클라이언트 지원다양.. 2024. 9. 2. [Spring] AOP AOPAOP가 필요한 상황모든 메소드의 호출시간을 측정할 때공통 관심 사항(cross-cutting concern) vs 핵심 관심 사항(core concern)회원 가입 시간, 회원 조회 시간을 측정하고 싶다면 ?문제회원가입, 회원 조회 등에 시간을 측정하는 기능은 핵심 관심 사항이 아니다.시간을 측정하는 로직은 공통 관심 사항이다.시간을 측정하는 로직과 핵심 비즈니스의 로직이 섞여서 유지보수가 어렵다.시간을 측정하는 로직을 별도의 공통 로직으로 만들기 매우 어렵다.시간을 측정하는 로직을 변경할 때 모든 로직을 찾아가면서 변경해야 한다.AOP 적용AOP : Aspect Oriented Programming (관점 지향 프로그래밍)각 비즈니스 로직마다 시간을 측정하는 로직을 덧붙이지 않고 시간 측정 로직.. 2023. 8. 29. [Java] String클래스의 메소드들 스프링프로젝트나 알고리즘을 풀이하는데 자바의 클래스, 메소드들이 익숙치않아 때아닌 늦은 복습을 해보고자 하여 작성하게 되었다..charAt()charAt메서드는 문자열에서 지정된 index에 있는 한 문자를 가져온다. (배열에서 배열이름[index]로 값을 가져오는거랑 같음)배열의 index와 마찬가지로 0부터 시작함.String str = "hello"; char ch = str.charAt(4); //변수명 str이라는 문자열의 4번째 index값을 가져와 'o'를 ch에 저장..substring()substring() 메서드는 문자열의 일부를 뽑아낼 수 있음.substring(시작번호, 끝번호)의 형식인데 주의 할 점으로 시작번호는 index처럼 0으로 시작하지만,끝번호는 그 번호를 포함.. 2023. 8. 22. 이전 1 다음