반응형

전체 글 25

2. [gRPC] gRPC 동작 원리

안녕하세요. 코딩도치입니다~ 오늘은 gRPC의 동작 원리에 대해서 공부해보도록 하겠습니다. 이번에 알아볼 것은 저수준의 gRPC 통신과 관련된 내용입니다. 사실 gRPC 애플리케이션 개발자는 사용되는 인코딩 기술, 네트워크에서 작동하는 방식 등의 세부적인 내부 처리를 알 필요는 없습니다. 하지만, 실 서비스 환경에서 gRPC를 사용할 때, 통신 관련 문제를 해결하려면 저수준의 gRPC 메시지 흐름을 이해하는 것이 좋습니다. gRPC 클라이언트와 서버의 역할 RPC 시스템에서 서버는 클라이언트에 의해서 원격으로 호출되는 메서드의 기능을 구현하고, 클라이언트는 서버의 메서드를 호출해서 사용하게 됩니다. 이 때, 클라이언트는 원격 메서드의 추상화를 제공하는 stub이라는 객체를 통해서 메서드를 사용하게 됩니다..

1. [gRPC] gRPC 소개

안녕하세요. 코딩도치입니다~ 오늘부터 gRPC라는 것에 대해서 공부해보도록 하겠습니다. 마이크로서비스 아키텍처(MSA)는 이제 최신 소프트웨어 애플리케이션에서는 필수라고 할 수 있는데요. 이러한 MSA구조에서 중요한 것은 바로 프로세스간 통신 기술입니다. 예를 들어, MSA 구조의 온라인 판매 시스템은 주문 관리, 검색, 결제, 배송 등 서로 연결된 여러 마이크로서비스로 구성될 것입니다. 이러한 시스템 구조는 작은 단위의 서비스들이 서로 통신해야하고, 요청량에 따라 네트워크 통신 연결이 급증할 수밖에 없습니다. 그렇기 때문에, 프로세스 간 통신 기술이 분산 소프트웨어의 가장 중요한 부분이 되는 것이죠. gRPC가 바로 이러한 곳에 사용하는 프로세스 간 통신 기술입니다. 프로세스 간의 통신에는 동기식 스타..

1. 쿠버네티스 레퍼런스 공부 - 개념 : 쿠버네티스란 무엇인가?

쿠버네티스(K8s)란? - 쿠버네티스는 컨테이너화된 워크로드와 서비스를 관리하기 위한 이식성이 있고, 확장가능한 오픈소스 플랫폼입니다. 시대의 변화 (전통적인 배포 시대 -> 가상화된 배포 시대 -> 컨테이너 개발 시대) - 전통적인 배포 시대 : 하나의 물리 서버에서 여러 애플리케이션을 실행하면 리소스 할당 문제가 발생할 수 있습니다. 그래서 초기에는 서로 다른 여러 물리 서버에서 각 애플리케이션을 실행하는 형태를 가졌습니다. 하지만 이러한 방식은 리소스의 낭비가 심하고, 여러 물리 서버를 유지하기 위한 비용이 많이 든다는 문제가 있습니다. - 가상화된 배포 시대 : 그렇게 가상화라는 개념이 도입되었습니다. 하나의 물리 서버에서 여러 가상 시스템을 실행하고, 각 가상 시스템에서 애플리케이션이 동작하는 ..

데이터베이스 1장 - Physical Storage Systems(물리 저장소)

안녕하세요 코딩도치입니다. 오늘은 데이터베이스의 Physical Storage Systems, 물리 저장소에 대해서 알아보도록 하겠습니다. 먼저 Storage는 두가지로 구분할 수 있습니다. - Volatile storage(휘발성 저장소) : RAM이 대표적인 휘발성 저장소로, 전원이 꺼지면 안에 저장된 데이터들이 날라가게 됩니다. - Non-Volatile storage(비휘발성 저장소) : Hard disk가 대표적인 비휘발성 저장소로, 데이터들이 영구적으로 저장되는 저장소입니다. 데이터베이스의 저장은 주로 비휘발성 저장소에 데이터를 저장하고, DBMS 메모리영역 버퍼로 데이터 입출력(I/O)을 통해 읽어들여 접근하는 방식을 사용합니다. 저장소를 선택할 때는 속도, 비용, 신뢰성 등을 고려하여 선택..

네트워크 0장 - 네트워크 흐름 : www.google.com 접근

안녕하세요 코딩도치입니다. 앞으로 네트워크를 자세히 공부하기 앞서 전체적인 네트워크의 흐름, 네트워크를 공부해서 궁극적으로 마지막에 이해해야하는 것에 대해서 알아보도록 하겠습니다. 대표적인 면접 질문이기도 한 'www.google.com에 접근하면 일어나는 일'에 대해서 알아보면서 전체적인 네트워크의 흐름과 앞으로 공부해야하는 것들에 대해서 알아볼 수 있습니다. 한 학생이 학교 (학교 네트워크)에서 노트북으로 www.google.com에 접속하는 상황을 가정하겠습니다. 먼저 학교 네트워크에 연결된 노트북은 다음과 같은 정보가 필요합니다. 1. 자기 자신의 IP주소 - 정보를 교환하기 위해서는 나 자신 또한 주소가 필요합니다. 2. 첫번째 hop (gateway) 라우터 주소 - 신호를 전달할 다음 주소가..

3. [Python] 프로그래머스 2020 카카오 블라인드 채용 : 가사 검색 - 코딩도치

안녕하세요. 코딩도치입니다~ 오늘은 프로그래머스에 있는 2020 카카오 블라인드 채용 : 가사 검색 문제를 풀어보려고 합니다! 위 문제는 트라이(Trie) 자료구조를 사용하여 풀어야 효율성 테스트를 통과할 수 있습니다. 먼저, 트라이(Trie) 자료구조에 대해서 알아보겠습니다. 트라이(Trie) 자료구조 트라이는 문자열을 트리 형태로 저장하는 문자열 검색에 특화된 자료구조입니다. 트라이 자료구조를 사용하게 되면 가장 긴 문자열의 길이가 N이라고 했을 때, O(N)의 시간복잡도로 문자열을 찾을 수가 있습니다. ["app", "apart", "away", "bear"] 의 문자열이 주어졌을 때, 트라이 자료구조가 만들어지는 과정은 다음과 같습니다. 트라이 자료구조는 아무 데이터도 들어 있지 않은 루트 노드부..

2. [Python] 프로그래머스 2021 카카오 블라인드 채용 : 합승 택시 요금 - 코딩도치

안녕하세요. 코딩도치입니다~ 오늘은 프로그래머스에 있는 2021 카카오 블라인드 채용 : 합승 택시 요금 문제를 풀어보려고 합니다! 위 문제는 플로이드 워셜(Floyd-Warshal) 알고리즘을 사용하여 풀어야 효율성 테스트를 통과할 수 있습니다. 먼저, 플로이드 워셜(Floyd-Warshal) 알고리즘에 대해서 알아보겠습니다. 플로이드 워셜(Floyd-Warshal) 알고리즘 프로이드 워셜 알고리즘은 가중치 그래프에서 최단 경로를 찾는 알고리즘입니다. 그래프에서 최단 경로는 찾는 알고리즘은 다양합니다. 하지만 각각의 알고리즘이 적용될 수 있는 상황이 있기 때문에, 문제를 보고 적절한 알고리즘을 파악할 수 있어야합니다. 또다른 그래프 최단 경로 알고리즘인 다익스트라 알고리즘과 특징을 비교해보자면 다음과 ..

2. [C++]백준 알고리즘 15684번: 사다리 조작 - 코딩도치

안녕하세요. 코딩도치 입니다~ 오늘은 백준 알고리즘 15684번 사다리 조작 문제를 풀어보려고 합니다! 이해하는 것도, 방법을 생각하기도, 구현하기도 참 어려운 문제입니다ㅜㅜ 그래도 한번 차근차근 알아보겠습니다! 먼저 이 문제는 기본적으로 dfs를 활용해서 모든 경우의 수를 다 생각해보고 판단할 수 있습니다. 하지만 이렇게 하면 시간초과가 나버리는데요. 그렇다고 무슨 특별한 방법이 있는 것은 아닙니다. 모든 경우의 수를 본다는 전제를 두고 그 경우의 수를 줄여주는 방법 밖에는 없습니다. 그럼 경우의 수는 어떻게 줄일까요?? 간단합니다. 기본적인 dfs방식에서 어떠한 조건을 주고 해당 조건을 만족하는 경우에만 이어서 탐색을 하도록 하는 것이죠. 이러한 방법을 백트래킹(Backtracking)이라고 합니다...

1. [운영체제] CPU 스케줄링(Scheduling) - 코딩도치

안녕하세요. 코딩도치입니다~ 오늘은 운영체제 내용중에서 CPU 스케줄링에 대해서 공부해보려고 합니다! CPU 스케줄링은 멀티프로그램 환경에서 기본이 되는 것입니다. 다음과 같이 여러개의 프로세스가 메모리에 로드 되어있고, 각 프로세스는 돌아가면서 CPU를 선점하여 실행되게 됩니다. 이렇게 많은 프로세스 중에서 어떤 프로세스를 실행할 것인지 결정하고, CPU를 할당하는 작업을 CPU 스케줄링이라고 합니다. CPU는 속도가 매우 빠르기 때문에 어떠한 작업을 처리하고 노는 시간이 많았습니다. 이러한 CPU의 Utilization(사용률)을 높이기 위해서 즉, CPU가 노는 시간이 없도록 하는 데에 필요한 것이 CPU 스케줄링입니다. 결국 CPU 스케줄링의 문제는 대기중인 프로세스 중에서 어떤 프로세를 선택할 ..

1. [C++] 프로그래머스 2020 카카오 인턴십 : 보석쇼핑 - 코딩도치

안녕하세요. 코딩도치입니다~ 오늘은 프로그래머스에 있는 2020 카카오 인턴십 : 보석쇼핑 문제를 풀어보려고 합니다! 해당 문제는 정확성과 효율성까지 테스트하는 문제입니다. 그래서 문제를 딱 보고 완전탐색과 같은 방법으로 해결할 수는 있겠지만, 그렇게 하면 효율성 테스트를 통과할 수 없겠죠? 여기서 필요한 알고리즘이 바로 투 포인터(Two Pointer) 알고리즘입니다. 어떠한 연속된 배열의 범위를 구하는 문제이고, 빠른 검색을 요구하기 때문에 위 알고리즘을 생각해볼 수 있는 것입니다. 먼저 투 포인터(Two Pointer)가 무엇인지부터 살펴보겠습니다. 투 포인터(Two Pointer)란, 리스트를 두 개의 포인터를 이용해 순차적으로 접근하면서, 두 포인터 구간의 값이 타겟 값과 같을 때 까지 포인터를..

10. [Java] 접근제어자란 무엇인가 - 코딩도치

안녕하세요. 코딩도치 입니다~ 오늘은 접근제어자에 대해서 알아보도록 하겠습니다! 1. 접근제어자란 접근제어자는 변수, 함수, 클래스 등을 선언할 때 사용됩니다. 접근제어자란 말 그대로 해당 변수나 함수 등에 대한 사용자의 접근을 제한하는 역할을 합니다. 접근 제한을 통해서 해당 정보를 외부로부터 보호하는 것입니다. Java에는 4가지 접근제어자가 있습니다. - public : 접근에 제한이 없음 - protected : 동일한 패키지 내에 있거나, 파생 클래스의 경우 접근 가능 - default : 아무런 접근제어자를 명시하지 않았을 경우 할당되는 제어자이며, 동일한 패키지 내에서만 접근 가능 - private : 자기 자신의 클래스 내에서만 접근 가능 private -> default -> protec..

2. [Java, Spring, Tomcat] Faceted Project Problem

안녕하세요. 코딩도치 입니다~ 오늘은 Tomcat을 이용해서 웹서비스를 구동할 때 만날 수 있는 에러를 소개해볼까 합니다! 웹애플리케이션을 개발하면서 was서버로 Tomcat을 많이 이용하실텐데요. 개발환경에 따라 Tomcat의 버전을 변경해야 하는 경우가 있을 수 있습니다. 그렇게 버전을 변경 했을 때 다음과 같은 에러를 만나실 수 있습니다. Target runtime Apache Tomcat is not defined. 위 에러는 해당 프로젝트의 runtime 환경의 tomcat버전이 변경되지 않았기 때문에 발생하는 것입니다. 그럼 프로젝트의 runtime환경을 변경해볼까요? 저는 Eclipse를 이용해서 개발을 하기 때문에 Eclipse 환경에서 프로젝트 설정을 변경하는 방법을 알려드리겠습니다. 먼..

에러 로그/web 2019.12.09
반응형