본문 바로가기

분류 전체보기

(108)
Spring 예제 코드로 알아보는 semaphore, mutex 동기화 이해 동기화부터 알아야 하는데 동기화란 프로세스들 사이의 수행시기를 맞추는것을 말한다. 실행 순서 제어를 위한 동기화 상호 배제를 위한 동기화 위 두가지 케이스로 나뉠수 있다. 대표적으로 생산자 소비자 문제가 있는데 생성자는 데이터를 추가하면 변수 1을 증가시키고 소비자는 데이터를 삭제하면 변수 1을 감소시킨다. 총합 == 10 생산자(){ 데이터 추가 총합 변수 1 증가 } 소비자(){ 데이터 삭제 총합 변수 1 감소 } 생산자를 1000번 소비자를 1000번 실행 시키면 결과값은 항상 0이 나오지 않는다. 생산자와 소비자가 동기화 되있지 않아서 생기는 문제이다. 소비자 작업이 끝나기 전에 생산자가 수정되어 공유자원에 문제가 생긴다. 공유자원(shared resource)이란 동시에 접근해서는 안되는 자원이..
istio(이스티오)와 서비스 메시, 프록시 쿠버네이티스와 밀접하게 연관된 istio에 대해 정리 한번 해야겠다 생각만하다가 이제 서야 정리한다. 일단 istio를 설명하기 전에 서비스 메시라는것을 우선 알아야 한다. 서비스 메시 애플리케이션 트래픽을 관리, 추적 및 보안성을 강화하기 위해 플랫폼 레이어에 구성되는 네트워크 제어 방법 대표하는 기능은 크게 3가지 1. 애플리케이션 트래픽 관리 (Traffic Management) 2. 관찰 가능성(observability) 3. 보안 1. 애플리케이션 트래픽 관리 - 트래픽 관리를 위한 라우팅은 더 나은 배포 전략을 가능하게 한다. - 트래픽 라우팅 규칙을 사용하면 서비스 간의 트래픽 흐름 및 API 호출을 쉽게 제어한다 - 서킷 브레이커, 타임아웃 및 재시도와 같은 구성을 단순화한다 - A/B 테..
mysql aborted clients 문제 해결 db를 mysql 을 쓰고 있는데, 갑자기 이슈로 client abort 되는게 너무 많다고 전달 받았다. 원인을 찾고 이슈를 수정하기 까지의 과정을 정리해본다. aborted clients 는 클라이언트가 제대로 연결을 닫지 않고 죽어서 중단된 연결 수를 의미한다. 해당 오류 관련해서 mysql 공식문서를 찾아봤더니 아래와 같이 가이드 되고 있었다. Aborted_clients 에러가 발생하면 확인 하면 좋을것들 error log를 봐라 general query log를 봐라 The Aborted_***xxx*** and Connection_errors_***xxx***가 있을테니 상태를 확인해라 mysql 에서 저 로그를 찍는게 설정을 바꿔야 해서 mysql 에서 설정 바꾸다가 잘 쓰고 있던 도커 컨..
자바스크립트 event loop와 scope chain 이해 난 자바개발자라 그냥 이슈 수정하는 정도만 알면되지 했다가 얼마전 딥한 이슈를 수정하다가 많은 문제들을 마주쳐서 정리 해봤다. JavaScript 는 싱글스레드다. 한번에 하나씩만 작업을 처리하게 되어있다! 자바스크립트는 내부는 어떻게 동작 할까? single-thread의 문제에 대한 솔루션으로 자바스크립트는 비동기 처리를 하는데 이 비동기 처리를 위한 자바스크립트의 구조를 알아보자. WEB (Browser) APIs **Web(Browser) API**란 브라우저가 우리에게 제공해주는 기능들을 자바스크립트 코드로 사용할 수 있도록 해주는 인터페이스이다. Callback Queue Callback Queue 혹은 **Task Queue**는 일종의 자료구조로서 특정 때가 되면 실행 될 콜백 함수들이 자..
java 에서 백분위수 빠르게 구하는 방법 회사에서 성능 개선을 위해서 쓴 블로그글~~ 한줄 요약하자면 백분위수를 구하기 위해서 dd-sketch 를 분석한 글이다. 논문 링크 : https://www.vldb.org/pvldb/vol12/p2195-masson.pdf 이 논문을 보고 쓴 글인데 논문 읽다가 도대체 이런건 누가 쓰는걸까 하고 저자를 찾아봤다 Jee E. Rim 이분하고 Homin K. Lee 이분 한국사람 이름인거같아서 찾아봤더니 포항공대를 나오셨다. 세상에는 참 똑똑한 사람이 많구나 저런사람들이 개발자라고 하는거지 내가 개발자라고 할 수 있을까 이런 생각이 들었다. 이런 사람들은 어떤 생각으로 살까 참 궁금하기도 하고 공부를 하면서 이 생각 저생각이 많이 들었다. Intro. 한번은 들어본 ‘평균의 함정’ 모니터링 시스템에서는 ..
Spring Reactive 도입기 - R2dbc에서 multiDatabaseSource 요즘 Reactive로 개발을 하면서 이것저것 온갖 고난을 맛봤다. 괜히 도입을 했나 싶을 정도로 디버깅도 어렵고 값 추적이 쉽지 않다. 롤백할까도 많이 고민했었다 자바만 하다 보니 비동기에 대한 이해도 부족하고 왜 이렇게 돌아가는지 이해도 잘 안 되는 거 같은데 어느 정도 정리가 된 거 같아 글을 써본다. Reactive 도입의 필요성? 전통적인 프로그래밍은 많은 양의 데이터를 실시간으로 처리하는 데 어려움을 겪을 수 있다. 이때 전통적인 프로그래밍이란 Spring MVC인데 전통적인 Servlet 기반의 Web Application Framework이며, 요청 당 스레드를 할당하여 동작한다. 반면, Spring WebFlux는 Reactive Streams를 기반으로 한 Non-Blocking IO ..
Azure Virtual Machines 설명 Azure VM(가상 머신)을 사용하여 클라우드에서 VM을 만들고 사용할 수 있다 가상 머신은 다음이 필요할 때 선택하는 것이 좋다 - OS(운영 체제)에 대한 완전한 제어. - 사용자 지정 소프트웨어를 실행하는 기능. - 사용자 지정 호스팅 구성을 사용해야 하는 경우. 실제 하드웨어를 구입 및 유지 관리하지 않고도 가상화의 유연성을 제공해서 vm 을 쓴다. 하지만 VM에서 실행되는 소프트웨어를 구성, 업데이트 및 유지 관리는 따로 해줘야 한다. 예를 들어 운영체제의 보안 업그레이드 라던가 직접 설치한 자바 버전 패치라던가~~ 가상 머신 크기 집합 기존에는 용도가 같은 가상 머신을 여러 개 만들었을 경우라면 이것들이 모두 동일하게 구성되었는지 확인해야 합니다. 또한 모니터링 하면서 가상 머신을 늘려야 할..
Azure의 핵심 아키텍처 구성 요소 간단 정리 애저를 사용하게 되었는데 aws도 회사에서 쓰다가 모르겠고 이참에 한번 하면 나중에 aws 쓸때도 좋겟다 싶어서 아예 처음부터 개념을 잡아 보려고 공식홈페이지에서 자료를 조사해서 써본다. 애저(Azure)는 마이크로소프트(Microsoft)에서 제공하는 클라우드 컴퓨팅 플랫폼 Azure 서비스를 만들고 사용하려면 Azure 구독이 필요 자체 애플리케이션 및 비즈니스 요구 사항을 해결할 때는 Azure 계정을 만들어 구독을 생성해야 함 Azure 구독을 만든 후에는 각 구독 내에서 Azure 리소스를 만들 수 있다. 리소스: Azure에서 관리되는 엔터티입니다. Azure Virtual Machines, 가상 네트워크, 스토리지 계정 등을 예로 들 수 있다. 리소스 그룹: 구독에서 관련 리소스를 그룹화하는..