일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- MSA
- linux
- docker
- MAC
- 도커
- Chat gpt
- 정규표현식
- chat API
- error
- ChatGPT
- 네이버클라우드플랫폼
- 모니터링 및 경고 중앙화
- crontab
- desktop
- eclipse
- 메시지
- Catalina
- 리눅스
- AWS
- 자바 정규식
- GIT
- 알림
- 네이버웍스
- 마이크로서비스 패턴
- 가상머신 차이
- sh
- GitLab
- application 재기동
- 제어루프
- 분산추적
- Today
- Total
목록전체 글 (48)
시간나는대로 틈틈히 정리 합시다~~!!!
1. 문제점 보통 애플리케이션을 실행하고 있는 서버에 로그를 기록하는데, 여러 개의 소규모 서버에 다수의 마이크로서비스 인스턴스를 배포하는 마이크로서비스 아키텍쳐 기반의 시스템 환경에선 다음과 같은 문제가 있다. - 각 마이크로서비스 인스턴스가 로컬에 로그 파일을 기록하는 상황에서 전체 시스템 환경에서 발생하는 사건을 개괄하려면 어떻게 해야 하는가? - 문제가 발생한 마이크로서비스 인스턴스를 찾아서 로그 파일에 오류 메시지를 쓰려면 어떻게 해야 하는가? - 최종 사용자가 문제를 보고했을 때 이와 관련된 로그 메시지를 찾으려면 어떻게 해야 하는가? - 문제의 근본 원인이 되는 마이크로서비스 인스턴스를 찾으려면 어떻게 해야 하는가? 2. 해결책 로그를 중앙화해 관리하고, 다음과 같은 기능을 갖춘 새 컴포넌트..
1. 사용자 정보 설정 git config --global user.name "사용자이름" fit config --global user.email "이메일" 2. 기본적인 명령어 목표 명령어 설명 저장소 생성 git init 실행한 위치를 Git 저장소로 초기화 저장소에 파일 추가 git add 파일이름 해당 파일을 Git이 추적할 수 있게 저장소에 추가 저장소에 수정 내역 제출 git commit 변경된 파일을 저장소에 제출 저장소 상태 확인 git status 현재 저장소의 상태를 출력 3. 저장소 사용을 위한 branch 명령어 목표 명령어 설명 저장소에 브랜치 추가 git branch 이름 '이름'의 브랜치 생성 모든 브랜치 정보 확인 git branch -a 모든 로컬, 원격 저장소의 브랜치 정..
1. 오류 메시지 xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun 2. 해결방법 터미널에서 아래 명령어 입력 xcode-select --install 아래와 같이 메시지가 표시되고 설치 팝업이 표시된다. xcode-select: note: install requested for command line developer tools
1. 정의 - 일체형 애플리케이션을 서로 협력하는 독립 소프트웨어 컴포넌트로 나누는 것이며, 애플리케이션을 쉽게 확장하고 빠르게 개발하기 위한 아키텍처이다. - 아래 두가지 목표를 달성하고자 일체형 애플리케이션을 작은 독립컴포넌트로 나누는 것이다. > 빠르게 개발해 지속적으로 배포할 수 있어야 한다. > 수동 혹은 자동으로 쉽게 스케일링할 수 있어야 한다. - 독립컴포넌트로 동작하려면 아래와 같은 기준을 충족해야 한다. > 아무것도 공유하지 않는 아키텍처를 유지해야 한다. (데이타베이스 공유X) > 명확한 인터페이스를 통해서만 통신해야 한다. (동기서비스 혹은 API를 이용한 메시징 방식을 사용할 수 있는데, 메시지 형식은 버전 관리 전략에 따라 안정적으로 문서화되고 개선되어야 한다.) > 개별적인 런타..
1. 문제점 - 일반적으로 애플리케이션은 여러 환경 변수나 파일에 담긴 구성 정보와 함께 배포된다. - 다수의 마이크로서비스 인스턴스가 배포된 마이크로서비스 아키텍처 기반의 시스템 환경에선 문제가 있다. > 실행 중인 모든 마이크로서비스 인스턴스의 구성 정보를 한눈에 보려면 어떻게 해야 하는가? > 구성을 업데이트하고 관련된 모든 마이크로서비스 인스턴스가 올바르게 업데이트 되기 하려면 어떻게 해야 하는가? 2. 해결책 시스템 환경에 모든 마이크로서비스의 구성정보를 저장하는 새 컴포넌트(구성서버)를 추가한다. - 마이크로서비스 집합에 대한 구성정보를 한 곳에 저장하고 환경별 설정을 지원한다. (예: dev, test, qa, prod) 3. 구현된 오픈소스 도구 - 스프링 클라우드 : Spring Conf..
1. 문제점 - 보통 HTTP 기반의 Restful Json API와 같은 블로킹 I/O 모델을 사용해 동기식 통신을 구현해 왔다. - 블로킹 I/O를 사용하면 요청을 처리하는 동안 운영체제의 스레드를 점유하게 된다. - 동시 요청 수 혹은 요청과 관련된 컴포넌트가 증가하면 운영체제의 가용 스레드가 부족해 응답 시간이 늦거나 서버가 중단되는 문제가 발생할 수 있다. - 블로킹 I/O를 과도하게 사용하면 마이크로서비스 시스템에 오류가 발생하기 쉽다. - 연쇄 장애가 발생할 수 있다. > 어떤 서비스의 지연 시간이 증가하면 가용 스레드가 부족해져서 클라이언트가 실패할 수 있다. > 이런 상황은 클라이언트의 클라이언트에게도 동일한 유형의 문제를 유발하게 된다. 2. 해결책 논블로킹 I/O를 사용해 데이터베이스..
1. 문제점 일부 마이크로서비스만 시스템 환경 외부에 공개, 그외 마이크로서비스는 차단하는게 바람직하다. 공개된 마이크로서비스는 악의적인 클라이언트로부터 보호해야한다. 2. 해결책 클라이언트와 마이크로서비스 사이에 새 컴포넌트(에지서버)를 추가한다. - 외부로 공개하면 안되는 내부 서비스는 숨긴다. - 외부 요청을 허용하는 마이크로서비스로만 요청을 라우팅한다. - 허용된 마이크로서비스는 악의적인 요청으로부터 보호한다. - 표준 프로토콜과 OAuth, OIDC, JWT, API키 등으로 신뢰할 수 있는 클라이언트인지 확인한다. 3. 구현 참고 일반적으로 에지 서버는 리버스 프록시로 동작하며, 동적 로드 밸런싱 기능을 제공하고자 검색 서비스와 통합될 수 있다. 4. 구현된 오픈소스 도구 - 스프링 클라우드 ..
1. 문제점 클라이언트가 마이크로서비스와 그 인스턴스를 찾을 수 있어야 한다. 일반적으로 컨테이너 등에서 실행되는 마이크로서비스 인스턴스는 시작하면서 동적 IP 를 할당 받는다. 그러다 보니 클라이언트에서는 마이크로서비스가 노출하는 HTTP 기반의 REST API를 호출하기 쉽지 않다. 2. 해결책 현재 사용 가능한 마이크로서비스와 그 인스턴스를 추적하는 새 컴포넌트(서비스검색 서비스)를 시스템 환경에 추가한다. - 마이크로서비스와 마이크로서비스 인스턴스를 자동으로 등록 및 해지한다. - 클라이언트는 마이크로서비스의 논리 엔드포인트에 요청을 보낼 수 있어야 한다. - 요청은 사용 가능한 마이크로서비스 인스턴스 중 하나로 라우팅된다. - 마이크로서비스에 대한 요청은 가용 인스턴스로 로드밸런싱 되어야 한다...
1. 자바 문자열 객체(java.lang.String)에서 정규식을 사용하는 자주 쓰는 메소드 - boolean matches(String regex) => 매칭 여부 확인 ex) "abc".matches("[a-z]"); => true - String replaceAll(String regex, String replacement) => 매칭되는 값 변경 ex) "abc123".replaceAll("[a-z]", "*"); => ***123 - String[] split(String regex) ex) "123b456".split("[a-z]"); => ["123","456"] 2. java.util.regex 패키지에 있는 클래스 - Pattern 객체 정규식의 컴파일된 표현 입니다(정규식을 적용 가능..