본문 바로가기

전체 글135

Codility : Leader Dominator 풀이 Java, HashMap entrySet 문제 Dominator coding task - Learn to Code - Codility Find an index of an array such that its value occurs at more than half of indices in the array. app.codility.com An array A consisting of N integers is given. The dominator of array A is the value that occurs in more than half of the elements of A. For example, consider array A such that A[0] = 3 A[1] = 4 A[2] = 3 A[3] = 2 A[4] = 3 A[5] = -1 A[.. 2022. 3. 3.
RAID(레이드) 란 무엇인가? RAID 0/1/5/6/1+0 RAID(Redundant Array of Independent Disk) 여러 개의 하드 디스크에 일부 중복된 데이터를 나눠서 저장하는 기술 -> 소용량의 저장장치를 여러 대로 묶어서 대용량 저장장치를 만들어서 사용하는 기술 RAID는 여러 개의 작은 디스크들을 배열 구조로 연결하고 하나의 unit으로 패키지 함으로써 액세스 속도를 크게 향상시켰고 신뢰도 또한 높였다. RAID는 최근 대규모 저장 용량을 필요로 하는 중대형급 컴퓨터 시스템에서 널리 사용되고 있다. 출현 배경 디스크는 컴퓨터의 프로그램 실행 속도에 직접적으로 영향을 주는 온라인 보조저장장치이기 때문에 액세스 속도와 신뢰도 향상또한 용량의 증가만큼 중요하게 생각된다. 디스크의 속도를 향상시키기 위해서는 액세스 시간을 줄이고 데이터 전송 속.. 2022. 2. 19.
OOP 객체 지향 프로그래밍의 특징 객체 지향 프로그래밍 Object Oriented Programming(OOP) 란? 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다. 장점은? OOP는 복잡한 것을 단순하고 재사용 가능한 구조로 모델링한다. 재사용한 가능한 OOP object는 여러 프로그램에서 사용할 수 있다. 다형성(Polymorphism)을 통해 클래스별 동작을 허용한다. 캡슐화를 통해 정보를 안전하게 보호할 수 있다. 원칙 추상화(Abstraction) : 객체에 액세스하기 위한 상위 수준의 public method만 노출한다. 사용자가 객체의 선택된 특성 및 method와만 상호작용하는 것을 의미한다. - 복잡성을 표현하기 .. 2022. 2. 19.
HTTPS란 무엇인가? / TLS(=SSL) 공개키 암호화 HTTPS is HTTP with encryption. HTTPS는 암호화 기능이 있는 HTTP 두 프로토콜의 차이점은 HTTPS가 TLS(SSL)를 사용하여 일반 HTTP 요청과 응답을 암호화 한다는 것이다. 따라서 HTTPS가 HTTP보다 훨씬 더 안전하다. HTTP란? HTTP는 Hypertext Transfer Protocol의 약자로 네트워크를 통해 데이터를 전송하는 데 사용되는 프로토콜 또는 정보를 표시하는데 사용되는 규정된 순서와 구문이다..? 쉽게 말해서 서로 다른 시스템들 사이에서 통신을 주고받게 해주는 가장 기초적인 프로토콜이다. 웹사이트 콘텐츠와 API call을 포함하여 인터넷을 통해 전송되는 대부분의 정보는 HTTP 프로토콜을 사용한다. HTTP 메시지에는 요청과 응답의 두 가지 .. 2022. 2. 19.
방화벽과 웹 방화벽의 차이는 뭘까? 방화벽(Firewall) TCP/IP 레벨에서 IP/Port 신뢰 여부를 기준으로 구분해주는 접근 제어 기반의 보안 솔루션이다. 새로운 서버가 들어왔다. 8080 포트로 시스템을 올리고 로컬에서 접근하려고 하니 방화벽이 막혀서 접근이 불가한 경우가 발생한다. 이때는 본인의 IP로 서버 8080 포트에 접속이 가능하도록 방화벽 신청을 해야한다. 방화벽 신청이 완료되고 8080 포트로 접근이 가능하게 되었다. 이제 9090 포트로 새로운 시스템을 올렸는데 이번엔 IP는 열려있지만 Port에서 막혀서 접속이 안되는 경우가 있다. 이때는 9090포트에 접속이 가능하도록 다시 신청을 해야한다. 위와 같이 방화벽은 IP/Port로 접근자를 제어한다. 따라서 OSI7 계층으로 봤을 때 Network 계층(3계층)과 .. 2022. 2. 19.
Distributed system(분산시스템)이란? 이점 및 고려사항 수많은 상위 기업들이 수십억 건의 요청을 처리하고 다운타임 없이 업그레이드할 수 있는 복잡한 분산 시스템을 구축했다. 확장 가능한 분산 시스템은 기본적인 고가용성(HA)이 필요하다. 분산 시스템은 사용자를 위한 단일 컴퓨터를 형성하기 위해 함께 작동하는 컴퓨터들의 집합이다. 이러한 모든 분산 컴퓨터는 하나의 공유 상태를 가지며 동시에 작동한다. 마이크로 서비스처럼 전체 시스템을 손상시키지 않고 독립적으로 고장 날 수 있다. 상호 의존적이고 자율적인 컴퓨터들은 네트워크에 연결되어 정보를 공유하고 소통한다. → 분산 시스템에는 IP주소나 물리적 케이블을 사용하여 구성요소를 연결할 수 있는 공유 네트워크가 있어야 한다. 분산 시스템의 이점 유지보수가 어려울 수 있다는 단점이 있지만 아래와 같은 이점도 있다. .. 2022. 2. 16.
고가용성 High Availability이란? 시스템에 장애가 생기더라도 빠르게 복구하는 성질 시스템을 장애 없이(중단 시간 없이) 오랫동안 가용한 상태로 운영할 수 있는 성질 99%의 고가용성 시스템이랑 100시간 운영 시 장애 시간이 1시간 이하임을 의미한다. 장애 허용(Fault Tolerant)과의 차이 - 장애 허용은 장애가 생기더라도 시스템이 이상 없이 동작할 수 있도록 보장하는 특성이고, 고가용성은 빠르게 복구하는 특성이다. - 동일한 개념으로 보기도 하고 혼용하기도 하니 굳이 따지자면 차이 없다고 할 수 있다. 고가용성 구성 방식 Hot Standby - 가장 대중적인 유형 - Active/Passive 또는 Active/Standby 형태로 가동 시스템과 백업 시스템으로 구성 Mutual Takeover - 2개의 시스템이 각각 고유.. 2022. 2. 16.
Load Balancer란? / L4 load balancer, L7 load balancer Load Balancer(로드밸런서) 란? 로드밸런서는 서버에 가해지는 부하(로드)를 분산(밸런싱) 해주는 장치 또는 기술이다. 클라이언트와 서버풀(분산 네트워크를 구성하는 서버들의 그룹) 사이에 위치하며 한 대의 서버로 부하가 집중되지 않도록 트래픽을 관리해 각각의 서버가 최적의 퍼포먼스를 낼 수 있도록 한다. Scale-out 방식으로 서버를 증설하기로 결정했다면 여러 대의 서버로 트래픽을 균등하게 분사해주는 로드밸런싱이 반드시 필요하다. OSI 계층에서 상위(7계층 Application Layer)에서 사용되는 장비는 하위 계층의 장비가 갖고 있는 기능을 모두 가지고 있으며, 상위 계층으로 갈수록 더 정교하게 로드밸런싱 할 수 있다. → 즉, L7 Load balancer가 L4 Load balan.. 2022. 2. 15.
Micro Service Architecture(MSA)의 장단점 들어가기 전에 모놀리식 아키텍처(Monolithic Architecture)란? 마이크로서비스 아키텍처의 반대되는 개념으로 전통의 아키텍처를 지칭한다. 하나의 서비스 또는 어플리케이션이 하나의 거대한 아키텍처를 가질때 모놀리식하다고 한다. 특징 내부 의존성이 강하다 구조적인 결합이 강력하게 유지된다. 비즈니스 컴포넌트들이 강한 결합 구조를 지니고 통일성이 있다. 장점 개발 초기 단순한 아키텍처 구조와 개발에 용이하다. 구조가 복잡하지 않다. 쉽게 고가용성 서버 환경을 만들 수 있다.(하나의 프로젝트에 모든 기능들이 들어있기 때문에) End-to-End 테스트가 용이하다 단점 프로젝트의 규모가 커짐에 따라 어플리케이션 구동시간이 늘어나고 빌드, 배포 시간이 길어진다. 작은 수정사항에도 전체를 다시 빌드하고.. 2022. 2. 15.
반응형