일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- MSA
- 백준 15685
- java
- 파이썬
- 프로래머스
- JPA
- 백준 17779
- springboot
- java 기술면접
- 프로그래머스
- MySQL
- spring cloud
- 백준 16719
- Spring Boot
- 백준
- 웹어플리케이션 서버
- Coroutine
- spring oauth
- 백준 파이썬
- 백준 16236
- re.split
- Kotlin
- sql 기술면접
- 백준 17626
- spring security
- 백준 16235
- JVM
- Spring
- 백준 19238
- with recursive
- Today
- Total
목록Programming/기타 (8)
시작이 반
하나의 API에서 여러개의 외부 API를 호출하고 있을때 어떤 하나의 API가 장애가 발생한다면 해당 API에 엮여있는 모든 API가 장애가 발생하는 것이 맞는 것일까? 아니면 한 페이지에 추천서비스, 검색서비스, 결제 서비스등 여러개의 서비스가 있을때 하나의 서비스가 장애가 발생하면 해당 페이지는 장애가 발생하는 것이 맞는 것일까?. 이상적인 서비스는 장애난 서비스만 장애로 보여지거나 장애가 아닌것 처럼 동작을 해야 한다. 아래와 같이 아마존과 넷플릭스는 MSA로 모든 서비스가 구축되어있으며 모든 서비스가 엮여있다. 하지만 하나의 서비스가 장애가 나더라도 정상적으로 작동한다. 이때 사용하는 것이 Circuit Breaker이다. Circuit Breaker 란? 회로 차단기란 뜻으로 caller에서 c..
ELK ElasticSearch, Logstash, Kibana의 약자로 로그 데이터를 수집, 저장 분석, 시각화 하기 위한 오픈 소스 플랫폼이다. ElasticSearch 데이터 검색 및 분석 오픈 소스로 분산 아키텍쳐를 통해서 데이터를 색인화 하고 인덱싱 및 검색기능을 제공한다. 이러한 로그 데이터는 Logstash를 통해서 전달 받는다. ElasticSearch는 클러스터링을 하여 사용되는데 Master-node와 Data-node 로 구성된다. Master-node는 하나 이상으로 존재하며 없을 경우 클러스터 작동이 정지된다. 인덱스의 메타 데이터, 샤드 위치와 같은 클러스터 상태 정보를 관리한다. Data-node는 실테 데이터를 저장하고 검색하는 역할을 수행한다. Logstash 로그 데이터를..
Sync, Async - 요청한 순서가 지켜지냐 Sync - 함수를 콜한 쪽에서 직접 결과를 처리함 Async - 함수를 콜한 쪽에서 처리 하지 않고 콜백을 넘기면서 콜백 함수를 통해 처리 Blocking, Non-Blocking - 요청에 대해 받은 쪽에서 처리가 끝나기전에 return 해주냐 Blocking - 작업이 완료될 때까지 기다림 Non-Blocking - 작업이 완료되지 않았음에도 즉시 응답 1. Sync, Blocking 2. Sync, Non-Blocking 3. Async, Blocking 4. Async, Non-Blocking
우선 Redis는 캐시 시스템을 이용한 in-memory 데이터 베이스이다. Cache란? 기존에는 데이터가 필요하다면 DB를 거치게 되고 DB에서 조회된 데이터를 사용할 것이다. 만약 서비스의 사용자가 증가하게 되었을때 모든 요청을 DB접근만으로 처리를 한다면 DB서버에 무리가 가게 될 수 있다. 물론 데이터베이스는 서버가 죽더라도 디스크에 저장이 되기 때문에 데이터가 유지된다는 안전한 방법이지만 성능적인 면에서는 기대하기 힘들다. 이렇게 필요한 데이터를 미리 저장해두었다가 데이터가 필요할 때 가져다 쓰는 것을 캐시라고 한다. 캐시는 메모리상에서 가져오기 때문에 디스크에 접근하는 것보다 훨씬 빠르다는 장점이있지만 서버가 죽게 되면 해당 데이터 또한 사라진다는 단점이 있다. Look Aside Cache..
어플리케이션을 운영하던 도중에 장애가 발생, 잘못된 접근, 사용자의 악의적인 행위, 예상치 못한 작동 등과 같이 문제가 발생했을 경우, 문제의 원인을 파악해야 한다. 이를 위해서 날짜, 시간, 서비스, 로직 등에 대한 정보가 필요하다. 이런 정보를 얻기 위해서 Exception이 발생하거나 중요한 기능들이 실행되는 부분에서는 로그(log)를 남기는 것이 필요하다. Log의 사전적 의미 로그의 사전적 의미는 "무언가를 기록하는 행위"이다. 이러한 파일을 모아 놓은 것이 Log파일이라고 한다. 로깅(Logging)이란? 정보를 제공하는 일련의 기록인 로그(Log)를 생성하도록 시스템을 작성하는 활동. 프린트 줄 넣기는 간단한 로그를 생성하기만 한다. 버그에 대한 유용한 정보를 제공할 수 있다. 성능에 관한 ..
싱글턴이란? 싱글턴 패턴은 인스턴스가 오직 1개만 생성되야 하는 경우에 사용되는 패턴이다. 생성자가 여러번 호출되도 처음 호출할때만 생성되고 다음부턴 처음 생성된 객체를 반환 하는 형식 객체가 한개만 생성되기때문에 메모리에 이점이 있다. 두번째 호출부터 로딩시간이 줄어들어 효율을 높일 수 있다. 싱글턴을 만들때 동시성 문제를 고려해서 설계해야 한다. 싱글턴으로 생성된 객체가 다른 클래스의 객체들과 많은 데이터를 공유할 경우 OCP원칙(Open-Closed-Principle : 개방 폐쇄 원칙)을 어기게 된다. 개방-폐쇄 원칙(OCP, Open-Closed Principle)은 '소프트웨어 개체(클래스, 모듈, 함수 등등)는 확장에 대해 열려 있어야 하고, 수정에 대해서는 닫혀 있어야 한다'는 프로그래밍 ..
단축키: ctrl + shift + enter : 문장 완성 ctrl + alt + v : 리턴값에 맞는 변수 자동 생성 ctrl + alt + m : 메소드로 빼기 ctrl + alt + n : inline 한줄로 만들기 ctrl + shift + t : 테스트 만들기 alt + insert : getter, setter
MVC란 Model View Controller의 약자로 에플리 케이션을 세가지의 역할로 구분한 개발 방법론이다. 이 패턴을 성곡적으로 사용하면, 사용자 인터페이스로부터 비지니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비지니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있다. Controller : 사용자가 접근 한 URL에 따라서 사용자의 요청사항을 파악한 후에 그 요청에 맞는 데이터를 Model에 의뢰하고, 데이터를 View에 반영해서 사용자에게 알려준다. View : Controller로 데이터를 받아서 클라이언트 측 기술인 html/css/javascript를 이용해 표현하는 역할을 한다. 데이터를 따로 보관하지 않고 처리한다. Model : 애플..