loading
본문 바로가기

728x90
반응형
분류 전체보기 41
728x90
반응형

[Go] Go언어 Channel (혹시 고루틴 포스팅을 보지 않으신 분은 먼저 훑고 오시길....) artist-developer.tistory.com/14?category=951423 [Go] 고루틴(go-routine) 앞서 Go언어 입문에 포스팅하였듯, Go언어의 대표적 특징 중 하나에는 병행성이 있다. Go언어는 'go' 키워드를 사용하여, 고루틴을 만드는데, 여기서 고루틴은 비동기적(asynchronously)으로 특정 함수 artist-developer.tistory.com 우리는 이제 Go언어에서 병행성(Concurrency)을 어떻게 보장하는지 알게 되었다. 이처럼 병행성이 보장된 Multi-thread와 같은 환경에서 가장 중요한 것은 동기화(Synchronous) 이다. Thread 간에 데이터를 공유하고 실행 순서를.. 2020. 9. 14.
Cloud, Devops, 인프라 개발자 면접 질문 클라우드 개발자, 인프라 개발자, 데브옵스 엔지니어 세부적으로 들어가면 하는 일은 차이가 있겠으나, 신입/경력 입사 면접 시 받는 질문에는 큰 차이가 없을 것이라 생각한다. 1. 클라우드 컴퓨팅이란 무엇인가? 2. 스케일 아웃(Scale-out)과 스케일 업(Scale-up)의 차이를 설명하라. 3. MSA(Micro Soft Architecture)의 개념을 설명하라. 4. MSA의 장점은 무엇인가? 기존 방식에 비해 어떤 Benefit을 가져올 수 있는가? 그리고 그에 따른 단점이나 리스크가 있는가? 5. 컨테이너란 무엇인지 설명하라. 6. 컨테이너를 위한 운영 환경에는 어떠한 것들이 있는가? 가장 많이 사용되는 것은 무엇인가? 7. 쿠버네티스가 가장 선호되는 이유가 무엇이라고 생각하는가? 8. 쿠버.. 2020. 9. 13.
[Go] 고루틴(go-routine) 앞서 Go언어 입문에 포스팅하였듯, Go언어의 대표적 특징 중 하나에는 병행성이 있다. Go언어는 'go' 키워드를 사용하여, 고루틴을 만드는데, 여기서 고루틴은 비동기적(asynchronously)으로 특정 함수 루틴을 실행하므로, 여러 함수(또는 코드)가 동시에(Concurrently) 실행된다.(병행성의 만족) 병행성(Concurrency) 흔히들 병렬성(Parallelism)과 병행성(Concurrency)을 혼동하곤 한다. 병렬성은, 실제로 여러 작업을 동시에 수행하는 것을 의미한다. 병행성은, 마치 여러 일을 동시에 하듯이 수행하는 것을 의미한다. 쉬운 예로 둘을 비교해보자. 이 글을 적고 있는 필자는 현재, '커피를 마시면서' '포스팅'을 하고 있다. 하지만 여기서, 커피를 마시는 일과 포스.. 2020. 9. 13.
[Go]GO 가비지 컬렉션(Garbage Collection) 저번 포스팅에 이어, Go의 대표적인 특징 중 하나인 가비지 컬렉션에 대해 알아보자. 가비지 컬렉터(GC)란? GO 언어의 이야기를 하기에 앞서, 먼저 가비지 컬렉터가 무엇인지 알아야한다. 여기서 가비지란, '유효하지 않은 메모리 주소', '해제되지 않은 메모리 영역'를 의미한다. 프로그래밍 언어에서는 보통 Danling Object라고 불리며, Java나 Go 에서는 Garbage라는 용어를 사용하고 있다. 우리에게 가장 친숙한 C/C++에서 그 예를 찾아보자면, //c++ int main(void) { int *a = new int; return 0;//Pointer를 해제하지 않고 프로그램 종료 : 메모리 누수 발생 } int* 에 할당된 메모리를 해제 하지 않고 프로그램을 종료하였다. C/C++에.. 2020. 9. 11.
[Go] Go 언어 강 타입(strongly-typed) 앞서 Go 언어의 대표적인 특징에서 언급한 것처럼, Go 언어는 강타입(strongly-typed) 언어이다. 프로그래밍 언어를 배우거나 다루다보면, 강타입/약타입이란 용어가 빈번하게 등장하곤 한다. 본 포스팅 에서는 이 용어가 의미하는 것이 무엇인지, 그리고 Go 언어에서는 이러한 특징이 어떠한 형태로 나타나는지를 알아볼 것이다. 강타입과 약타입 앞 포스팅에서 언급하였듯, 프로그래밍 언어에서 '타입'이란 자료형을 의미한다. 또한 여기에서의 강과 약이란, 자료형의 변환을 기준으로 구분된다. 흔히 Type Casting 또는 Type Conversion이라고 불리는 형변환은 언어를 능숙하게 다루기 위해서 반드시 숙지하여야 할 개념이다. (구글에 C++을 치면 'C++ int to string'. 'C++ .. 2020. 9. 9.
[Spark] 스파크 구조 및 실행 과정 스파크는 크게 보면 스파크 어플리케이션과 클러스터 매니저로 구성되어 있다. 스파크 어플리케이션은 실제 일을 수행하는 역할을 담당하며, 클러스터 매니저는 스파크 어플리케이션 사이에 자원을 중계해주는 역할을 담당한다. 스파크 어플리케이션(Spark Application) 먼저 스파크 어플리케이션부터 살펴보자. 스파크 어플리케이션은 Driver 프로세스와 익스큐터 프로세스로 구성된다. Spark Driver는 한 개의 노드에서 실행되며, 스파크 전체의 main() 함수를 실행한다. 어플리케이션 내 정보의 유지 관리, 익스큐터의 실행 및 실행 분석, 배포 등의 역할을 수행한다. 사용자가 구성한 사용자 프로그램(Job)을 task 단위로 변환하여, Executor로 전달한다. Executer는 다수의 worker.. 2020. 9. 8.