전체 글
-
내가 받았던 백엔드 인터뷰 질문들 (Java, Spring)SE General 2021. 9. 28. 18:36
4년차 자바 백엔드 기술 질문들 최근 '예상치 않게' 백엔드 기술 인터뷰에 참여하게 되었습니다. 당황한만큼 질문에 대한 응답도 제대로 하지 못했는데요. 이번 글에서는 기억에 남는 질문들을 정리하고, 그에 대한 답을 정리 kadensungbincho.tistory.com 실패의 쓰라림도 이후에 일이 잘 되고 나서는 좋은 경험이었다고 바라보게 됩니다. 받은 질문에 대해 좀 더 정확한 답변을 찾아보며, 인터뷰에 할애한 시간이 스스로에게 조금이라도 도움이 되도록 정리해 보았습니다. A 오라클 조인 종류? 간단하게 Inner, Outer, Left, Right [1] 등에 대한 질문이었음 과도하게 Broadcast Join, Nested loop 등을 생각하느라 답변을 잘 하지 못함 톰캣 ajp Connecto..
-
해시 알고리즘 특징SE General 2021. 9. 27. 11:03
해시 알고리즘은 String 데이터를 고정된 길이의 숫자형 String 결과물로 변환해주는 함수입니다. 이 결과물 String은 보통 원본 데이터보다 길이가 훨씬 짧은데요. 이렇게 해시 함수가 리턴한 값은 해시 값(hash values), 해시 코드, digests, hashes 등의 이름으로 불립니다. 해시 함수는 대부분의 언어에 기초 자료형으로 쓰이는 해시 테이블에 중심적인 역할을 합니다. 그 외에도 checksums, check digits, 핑거프린팅, lossy compression, randomization 함수, 에러 체킹 코드, ciphers 등에 사용됩니다. 이 글에서는 아래와 같은 사항들을 알아보겠습니다: 해시 함수의 기본적인 사항들 해시 함수가 쓰이는 곳 해시 함수의 일반적인 특징들 ..
-
[Learning Resources] CryptocurrencyLearning Resources 2021. 9. 26. 09:12
Articles 1978 A method for obtaining digital signatures and public-key cryptosystems Time, clocks, and the ordering of events in a distributed system 1979 – Invention of Merkle Trees (hashes in a tree structure) by Ralph C. Merkle 1980 Reaching agreement in the presence of faults 1982 https://www.microsoft.com/en-us/research/publication/byzantine-generals-problem/ Blind signatures for untraceabl..
-
Spring Framework란?Java 2021. 9. 10. 22:27
스프링은 2002년 릴리즈되어 JEE(Java Enterprise Edition) 서버를 대체하며 다양한 프로젝트가 추가되며 마이크로서비스, 애플리케이션 등을 만들기 위한 광범위한 기술로 자라났습니다 [1]. 이 글에서는 스프링에 대해 아래와 같은 점들을 알아보겠습니다: 스프링이란? IoC(Inversion of Control)와 DI(Dependency Injection) DI 외의 다양한 기능들 스프링 프레임워크의 진화 과정 스프링이란? 스프링은 보통 자바 애플리케이션 개발을 위한 경량 프레임워크라고 할수 있는데요. 이 부분에서 2가지 명확히해야할 부분은 아래와 같습니다. 첫 번째는 다른 프레임워크(Apache Struts 등)는 웹 애플리케이션에 제한되는 반면, 스프링은 어떠한 자바 애플리케이션 개..
-
Apache Tez란?Data 2021. 9. 2. 23:18
주요개념 빠르게 확장성있고 효율적인 데이터 플로우 중심 엔진 개발을 목적으로 함. 조금 학술적인 개념을 많이 사용하였고 그것이 코드에 반영되어 있음 DAG: Directed Acyclic Graph로 데이터 프로세싱 워크플로우를 나타냄. 데이터는 edge의 방향으로 흐름. Vertex: 프로세싱의 논리적인 흐름을 나타냄. 프로세싱 스텝은 애플리케이션에서 제공된 코드를 통해 데이터를 변경함. Logical DAG: 논리적 DAG은 vertices 세트로 구성되며 각 vertex는 특정 컴퓨팅 스텝을 나타냄. Task: vertex 내에서 한 단위의 프로세싱을 나타냄. 분산 프로세싱에서 하나의 vertex로 나타내어지는 논리적 work는 물리적으로 여러 기기에서 실행되는 tasks들로 구성됨 Physical..
-
맵리듀스의 제약과 Apache TezData 2021. 9. 2. 23:04
하둡의 분산처리엔진인 맵리듀스는 이후 많은 분산처리엔진에 영향을 주었습니다. 맵리듀스 개선에 대한 많은 논의와 연구와 동시에 한계점을 파악하고 새로운 프레임워크를 만드는데 그러한 맵리듀스의 한계점이 많이 고려되었는데요. 이 글에서는 맵리듀스의 한계점과 하둡 환경에서 대체제로 개선된 성능을 보여주는 테즈(Apache Tez)를 비교하는 내용을 다뤄보도록 하겠습니다. 맵리듀스의 제약들 [1] 하이 레벨 언어의 부재: 맵리듀스 자체로는 어떠한 하이 레벨 언어와 쿼리 레벨의 최적화를 제공하지 않음. 유저는 맵, 리듀스 함수로 구현해야 함. 스키마와 인덱스가 없음: 스키마와 인덱스가 없음. MR 잡은 인풋에 대해 작업을 하고 스토리지에 바로 저장할 수 있으나 이러한 부분은 데이터 모델링의 장점을 제외해 버림. 맵..
-
맵리듀스 처리 흐름 알아보기 (MapReduce Phases)Data 2021. 9. 1. 22:27
맵리듀스는 맵과 리듀스로 구성되어 있습니다. 한 단계 더 나아가 실제 데이터를 읽고 쓰는 처리 흐름을 살펴보면, 좀 더 작은 단위로 나뉠 수 있는 것들로 구성되어 있는 것을 알 수 있습니다. 이번 글에서는 아래와 같은 사항들을 중점으로 맵리듀스 처리 흐름을 자세하게 살펴보겠습니다: 맵리듀스 처리 흐름 개요 Record Reader Map Combiner Partitioner Shuffle and Sort Reduce Output Format 맵리듀스 처리 흐름 개요 파일시스템에서 데이터를 읽어서, 가공하고, 다시 파일시스템에 쓰는 맵리듀스 작업은 아래와 같은 처리 흐름을 가집니다: 맵리듀스의 job은 분산되어 실행되는 몇 가지 map tasks와 reduce tasks로 나뉩니다. 각 task는 할당된 ..
-
[Reading List] Articles on Containerization & Resource SchedulingLearning Resources 2021. 8. 30. 20:12
https://www.usenix.org/legacy/publications/library/proceedings/osdi99/full_papers/banga/banga.pdf https://people.eecs.berkeley.edu/~alig/papers/drf.pdf Borg Large-scale cluster management at Google with Borg SHIYF: A Secured and High-Integrity YARN Framework 2013 Omega: flexible, scalable schedulers for large compute clusters 2015 Heracles: Improving Resource Efficiency at Scale 2016 DieHard: re..