1. 마이크로 서비스 아키텍처(MSA, MicroService Architecture)에 대한 이해 [ 마이크로 서비스 아키텍처(MSA, MicroService Architecture)란? ] 애플리케이션 개발 초기에는 전체 애플리케이션의 소스 코드를 하나의 배포 유닛(war 또는 ear)으로 내장시키는 '모놀리식' 방식을 이용하였다. 하지만 기존 애플리케이션에 최소한의 변경 사항이 있어도 자체적인 QA(Quality Assurance) 주기에 따라 대규모 업데이트를 해야 하거나 일부 애플리케이션의 업데이트로 오류가 발생한 경우 전체를 오프라인으로 전환하고 문제를 해결하는 등 다운타임이 발생하게 되었다. 이러한 문제점을 해결하기 위해 전통적인 모놀리식(monolithic) 접근 방식과 다르게 애플리케이션..
개발을 하다 보면 함수의 파라미터로 변수를 넘겨주어야 한다. 각 언어마다 변수를 넘겨주는 방법(Pass By Value, Pass By Reference)이 다른데, 이를 정확히 인지하지 못하면 예상치 못한 버그를 발생시킬 수 있다. 이번에는 두가지 방법의 차이점을 알아보도록 하자. 아래의 내용은 dzone.com/articles/pass-by-value-vs-reference-in-java 를 바탕으로 작성하였습니다. 1. Pass By Value(Call By Value)에 대한 이해 [ Pass By Value(값에 의한 전달)의 의미 ] Pass By Value(값에 의한 전달)는 복사된 데이터를 전달하여 구성함으로써, 값을 수정하여도 원본의 데이터에는 영향을 주지 않도록 하는 방식이다. 예를 들..
개발을 하다 보면 함수의 파라미터로 변수를 넘겨주어야 한다. 각 언어마다 변수를 넘겨주는 방법(Pass By Value, Pass By Reference)이 다른데, 이를 정확히 인지하지 못하면 예상치 못한 버그를 발생시킬 수 있다. 이번에는 Java가 어떠한 방식으로 파라미터를 전달하는지 살펴보도록 하자. 1. 메모리 할당에 대한 이해 어떠한 변수를 선언한다는 것은 메모리를 할당한다는 것을 의미한다. 변수를 선언하기 위해 할당되는 메모리로는 크게 스택과 힙이 있다. 스택 영역에는 함수의 호출과 함께 지역 변수 또는 매개변수 등이 할당되며 정렬된 방식으로 메모리가 할당되고 해제된다. 반면에 힙 영역에는 클래스 변수(또는 인스턴스 변수) 또는 객체 등이 할당되며, 우연하고 무질서하게 메모리가 할당된다. (..
개발을 하다 보면 함수의 파라미터로 변수를 넘겨주어야 한다. 각 언어마다 변수를 넘겨주는 방법(Pass By Value, Pass By Reference)이 다른데, 이를 정확히 인지하지 못하면 예상치 못한 버그를 발생시킬 수 있다. 이번에는 Java가 어떠한 방식으로 파라미터를 전달하는지 살펴보도록 하자. 1. 문제 풀어보기 Pass By Value와 Pass By Reference에 대해 이야기하기 전에, 우리는 이들에 대해 얼마나 이해하고 있는지 확인하기 위해 아래의 간단한 시스템의 출력 결과를 예상해보도록 하자. 해당 유형의 문제는 실제 유명한 기업들에서 자주 출제되는 문제이기도 하다. [ 실행할 프로그램 ] class Dog { private String name; public Dog (Stri..
아래의 내용은 이 글의 내용을 번역, 의역 및 정리한 것입니다. 1. 세마포어(Semaphore)와 뮤텍스(Mutex) 세마포어와 뮤텍스는 모두 동기화를 이용되는 도구이지만 차이가 있다. 자세한 내용은 아래와 같다. [ Mutex(뮤텍스) ] 뮤텍스는 자원에 대한 접근을 동기화하기 위해 사용되는 상호배제 기술이다. 이것은 프로그램이 시작될 때 고유한 이름으로 생성된다. 뮤텍스는 Locking 메커니즘으로 오직 하나의 쓰레드만이 동일한 시점에 뮤텍스를 얻어 임계 영역(Critical Section)에 들어올 수 있다. 그리고 오직 이 쓰레드만이 임계 영역에서 나갈 때 뮤텍스를 해제할 수 있다. wait (mutex); ….. Critical Section ….. signal (mutex); 위의 수도코드는..