본문 바로가기

전체 글9

L4 장비와 WAS 이중화 L4 장비 OSI 7계층 중 L4(전송단계)에서 역할을 수행하는 장비로, 대표적으로 L4 스위치가 있다. 스위치를 사실상 가장 많이 사용하기 때문에, 실무에서 단순히 L4라고 부르기도 한다. 핵심 기능으로 들어오는 request를 적절히 분산시켜주는 로드밸런싱이 있다. WAS 이중화 일반적으로 웹 서비스를 할 때 WAS를 사용하는데, WAS를 한 대만 사용한다면 높은 트래픽에 서비스 지연이 발생할 수도 있고, 장애로 인해 WAS가 죽었을 때 서비스가 중단되는 상황이 발생할 수 있다. 그래서 이를 방지하기 위해 WAS를 한 대 더 두는 경우가 많다. 그런데 단순히 WAS만 이중화를 시키면 하나의 서비스인데 도메인이 두 개로 나뉘는 불편함이 있다. 가령 A와 B 두 대의 WAS가 있고, A가 장애가 발생해서.. 2021. 6. 27.
[REST API] DELETE 메서드로 requestBody를 보낼 수 없는 이유 / 보내는 법 이 문제는 필자가 서비스 개발을 위해 외부 API 연동을 테스트하면서 겪은 문제이다. API 스펙을 보면 DELETE 메서드로 requestBody를 보내라고 해서 분명 값을 Set해서 보내주는걸 확인했음에도 데이터 처리가 안됐었다. 그래서 해당 사이트 개발자에게 로그를 확인해달라고 했고, 답변은 body가 없다는 내용이였다. 문제 원인 결론부터 말하면, Spring 버전문제였다. 통신을 할 때 스프링에 내장된 RestTemplete 객체를 사용하는데, Spring 4.2.x 버전부터는 DELETE 메서드에 대해서 body를 세팅해준다. 하지만 우리가 사용하고 있는 버전은 3.2.x 여서 body가 세팅이 안됐던 것이다. 프레임워크 버전업은 다른 서비스에 영향을 줄 수 있는 여지도 크고 위험성도 크기 때.. 2021. 4. 10.
파이썬에서의 Stack 자료구조 활용 - 2 컴퓨터에서 메서드를 호출하는 순간, 해당 메서드는 메모리의 스택 프레임에 올라가게 되며 연속적으로 호출하면 쌓이게 된다. 이를 활용해서, 앞에서 소개한 스택 라이브러리를 사용하지 않고 재귀함수를 써서 특정 알고리즘을 구현할 수 도 있다. 예시 def recursive_function(i): if(i == 100): return print(i, '번째 재귀함수에서', i+1, '번째 함수를 호출합니다.') recursive_function(i+1) print(i, '번째 재귀함수 종료') recursive_function(1) 실행 결과 1번째 재귀함수에서 2번째 재귀함수를 호출합니다. 2번째 재귀함수에서 3번째 재귀함수를 호출합니다. .... 99번째 재귀함수에서 100번째 재귀함수를 호출합니다. 99번.. 2021. 4. 5.
파이썬에서의 Stack 자료구조 활용 - 1 파이썬에서 Stack 자료구조를 이용하려면, List 객체를 이용하면 된다. List의 가장 우측에 데이터를 추가하는 append() 메서드와 꺼내는 pop() 메서드를 활용하면 되는데, 이 때, 각 메서드는 O(1)의 시간복잡도를 가지므로 효율성 측면에서도 사용하는데 제한이 없다. 예시 stack = [] stack.append(5) stack.append(2) stack.append(3) stack.append(6) stack.pop() print(stack[::-1]) // 최상단 데이터부터 출력 출력 결과 [3, 2, 5] 참고로, Java에서는 Stack 라이브러리를 제공하기 때문에 이를 활용하면 된다. Java에서의 Stack 활용 import java.util.Stack; public sta.. 2021. 4. 5.