본문 바로가기

개념59

[jks] 공인 인증서 갱신 중 오류 처리 javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: No trusted certificate found 2023년 버전의 한국 전자 인증에서 갱신 한 jks 형식의 공인 인증서를 설치 하면서 다음과 같은 오류가 발생하였습니다. 기존에는 인증서 교체후 재실행하면 특이 사항 없이 갱신할 수 있었는데 이번에는 오류가 발생하여 원인을 확인해 보았습니다. javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: No trusted certificate found 원인 오류의 원인은 2022년 에는 DigiCert 사의 G1 인증서를 root 인증서로 사용하고 있었는데, 2023년 부터 G2 인증서로 교체 되어 root 인증서가 달라진 것이었습니다. 저희 작업은 하둡 마스터 노드와 워커 노드의 인증서 중 워커 노도의 인증서를 교체후.. 2023. 6. 24.
[SSL] SSL Renegotiate denied 오류 하둡에서 HDFS를 HA로 구성하면 WebHDFS를 사용할 때 스탠바이 노드에 요청을 해도, 액티브 노드로 연결을 넘겨주어 자연스럽게 작업을 처리할 수 있습니다. HTTP로 구성한 HA에서는 가능한데, HTTPS로 구성한 HA 환경에서는 작업이 처리되지 않았습니다. HTTPS로 스탠바이 노드에 요청을 하면 다음과 같은 오류를 확인할 수 있습니다. 2021-01-28 10:05:34,120 WARN org.mortbay.log (): SSL renegotiate denied: java.nio.channels.SocketChannel[connected local=/] SSL renegotiate 오류 TLS 1.3 환경에서는 중간자 공격등이 가능하여 SSL 재협상 기능을 제거했다고 합니다. 따라서 네트워크 .. 2021. 1. 28.
[개념] IPv4와 IPv6 IPv4와 IPv6에 대해서 간단하게 알아보겠습니다. IPv4 전체 12자리 숫자 32bit(8bit * 4) 주소체계 0~255까지의 3자리 숫자 4개로 구성 127.0.0.1 https://ko.wikipedia.org/wiki/IPv4 IPv6 IPv4의 주소체계 고갈로 탄생 128bit 주소체계 16bit로 표현된 16진수로 8자리로 구성 0000을 하나의 0으로 줄이거나, 연속되는 0을 없애고 : 로 구분할 수 있음 다음의 주소는 모두 동일한 주소를 알림 2001:0DB8:0000:0000:0000:0000:1428:57ab 2001:0DB8:0000:0000:0000::1428:57ab 2001:0DB8:0:0:0:0:1428:57ab 2001:0DB8:0::0:1428:57ab 2001:0D.. 2019. 10. 31.
[개념] 머신러닝과 데이터마이닝 머신러닝과 데이터마이닝에 대해서 알아보겠습니다. 데이터마이닝 통계학적 관점 데이터를 분석하여 인사이트를 도출하는 것을 목적 머신러닝 컴퓨터과학 관점 데이터를 이용한 학습을 통해 새로운 예측을 하는 것 데이터마이닝 데이터마이닝과 머신러닝은 유사합니다. 데이터마이닝은 데이터를 분석하여 인사이트를 도출하는 것을 목표로 하고, 머신러닝은 데이터를 이용한 학습을 통해 새로운 예측을 하는것을 목표로 한다고 할 수 있습니다. 데이터마이닝을 활용하는 분야에 분류, 예측, 연관, 군집이 있고, 이를 처리하는 알고리즘이 머신러닝에 사용되는 연관분석(K-근접이웃 알고리즘), 회귀분석(로지스틱 회귀분석), 군집분석(K-평균군집)기술이 사용됩니다. 머신러닝은 데이터 학습과 분석을 위한 알고리즘을 생성하고 발전하는 학문이고, 데.. 2019. 9. 24.
[개념] 유니코드 인코딩 UTF와 BOM 유니코드의 인코딩 방식은 UTF-16은 빅엔디안(BE) 모드와 리틀엔디안(LE)모드가 있습니다. 바이트 순서 마크(BOM, Byte Order Mark)는 이 형식을 구분하기 위해서 존재합니다. 빅엔디안과 리틀엔디안은 메모리 저장방식의 차이입니다. AC 00이라는 값을 메모리에 저장할 때 빅엔디안은 AC 00으로 저장하고, 리틀엔디안은 00 AC로 저장합니다. 이런 저장 방식의 차이를 다른 프로그램에게 설명하기 위해서 특정한 값이 필요하고, 유니코드 문서의 첫 번째에 이 값을 삽입하여 주는것을 BOM이라고 합니다. 인코딩별 BOM UTF-8: EF BB BF UTF-16 BE: FE FF UTF-16 LE: FF FE 저장된 파일을 Hex Viewer 등으로 hex 값을 확인하면 다음과 같이 BOM 정보.. 2019. 9. 17.
[개념] 한글 문자 인코딩 컴퓨터에서 사용하는 한글 문자 인코딩 방식에 대해서 알아보겠습니다. 컴퓨터가 처음 만들어 졌을 때 영어권에서 사용하는 언어를 1byte로 모두 표현할 수 있었습니다. 하지만 컴퓨터가 여러 나라에 보급되면서 각 나라의 문자를 모두 표현할 수 있는 방식을 찾아야 했습니다. 이를 위해서 국제 표준으로 유니코드를 정의하게 되었습니다. 유니코드를 인코딩하는 방식으로 utf-8과 utf-16이 있습니다. 유니코드와 별개로 윈도우에서 한글을 표현하는 방식이 EUC-KR과 이를 확장한 CP949 방식입니다. 한글 표현 방식 EUC-KR 유닉스 계열에서 사용하는 완성형 한글 코드 조합 CP949 EUC-KR을 확장하여 윈도우에서 사용하는 확장 완성형 한글 코드 조합 EUC-KR과 호환 가능 유니코드 전세계의 모든 문자를.. 2019. 9. 17.
[개념] NoSQL NoSQL은 전통적인 관계형 데이터베이스와 달리 유연한 데이터 저장 모델을 가지며, 저장 및 검색에 특화된 형태의 데이터 저장 모델입니다. 특징 데이터간 관계를 정의하지 않음 관계를 정의하지 않기 때문에 Join이 안됨 대용량 데이터 저장 가능 트랜잭션을 제공하지 않고, 단순한 모델을 사용하여 대량의 데이터 저장 가능 분산형 구조 고성능 머신으로 데이터를 처리하지 않고, 범용 장비를 클러스터로 묶어서 데이터를 처리하여 스케일 아웃, 장애복구 등에 용이함 스키마가 없음 데이터가 정해진 형태로 들어가는 것이 아니라 다양한 형태로 입력할 수 있음 로그 데이터, 비디오, 이미지 형태의 데이터도 저장 가능 CAP 이론 NoSQL은 분산구조이기 때문에 분산 컴퓨팅 환경의 CAP특징을 가지고, 이중에서 두 가지만 만.. 2019. 8. 8.
[개념] 메모리 누수(Memory Leak) 현상 프로그래밍에서 메모리 누수현상(Memory Leak)은 프로그램이 필요하지 않은 메모리를 계속 점유하고 있는 현상입니다. 자바의 메모리 누수 자바에서 메모리 누수는 더이상 사용하지 않는 객체가 가비지 컬렉션(GC)에 의해서 회수되지 않고 계속 누적되는 현상입니다. Old 영역에 누적된 객체로 인해서 메이저 GC가 빈번하게 발생하게 되고, 프로그램의 응답속도가 늦어지다 결국 OOM(OutOfMemory) 오류로 프로그램이 종료됩니다. 주로 빈번한 전역변수의 선언이나, 리스트나 해쉬맵 같은 콜렉션에 저장한 객체를 해제하지 않고 계속 유지하게 되면서 주로 발생합니다. 다음의 dzone 기사를 보면 Java 에서 메모리릭이 일어는 경우를 5가지 예를 들어서 코드와 함께 설명하고 있습니다. https://dzon.. 2019. 7. 2.
[개념] 오브젝트 스토리지(Object Storage) 오브젝트 스토리지는 AWS의 S3같이 HTTP를 이용하여 클라우드 플랫폼으로 구성되는 저장소라고 할 수 있습니다. 사용자는 파일의 정확한 위치는 알 수 없고, URI를 이용해 파일에 접근하고 가져올 수 있습니다. 빅데이터에서 수많은 파일을 저장하는데 적합한 형태입니다. 키-밸류 형태로 파일을 저장하고, 가져옵니다. https://brownbears.tistory.com/258 블록 스토리지와 오브젝트 스토리지 블록 스토리지와 오브젝트 스토리지에 앞서 정형 데이터와 비정형 데이터에 대해 먼저 간략하게 설명하겠습니다. 비정형 데이터란? 일정한 규격이나 형태를 지닌 숫자 데이터와 달리 그림이나 영상, 문서와 같이.. brownbears.tistory.com 하둡에서 최근 오브젝트 스토리지를 지원하기 위해서 오.. 2019. 5. 8.
[함수형 사고] 8장 폴리글랏과 폴리패러다임 함수형 프로그래밍 패러다임은 문제와 그것을 푸는 데 사용되는 도구에 관한 사고의 틀이라고 할 수 있습니다. 많은 현대 언어들은 폴리패러다임(멀티패러다임)이기 때문에 객체지향이면서 함수형일 수 있습니다. 함수형 사고는 도구의 발전에도 영향을 많이 주었습니다. 메이븐 같은 문맥위주의 도구가 현재는 그래들 같은 구성위주의 도구로 바뀌어 가고 있습니다. 모든 것을 구현하지 않고 필요한 것만 가져가다 쓸수 있는 형태로 바뀌어 가고 있습니다. 결론 함수형 사고로 갈아타는 것은 새로운 문법을 배우는 것 이상의 큰 전환이지만, 아주 이롭고 중대한 효과를 볼 수 있을 것입니다. 2019. 3. 13.
[함수형 사고] 7장 실용적 사고 함수형 프로그래밍에 필요한 사고방식을 위해 이제까지 많은 추상적인 예제들을 사용했습니다. 이제 이를 실제로 적용하기 위한 방법을 알아보겠습니다. 자바8자바8부터 등장한 스트림은 함수형 프로그래밍을 위한 기능을 제공합니다. 스트림을 이용하여 작업을 처리하면 collect()나 forEach() 같은 출력을 발생시키는 함수를 사용하기 전까지 map, reduce, filter 같은 함수들을 조합할 수 있습니다. 그리고 함수형 인터페이스와 옵셔널 클래스를 이용하여 함수형 프로그래밍을 구성할 수 있습니다. 함수형 인프라스트럭쳐 함수형 아키텍처는 불변성이 그 중심에 있습니다. 불변 클래스는 데이터의 변화로 인한 개발자의 걱정을 없애줍니다. 불변 클래스는 생성 시에만 변화가 있기 때문에 테스트가 간다하고, 스레드에.. 2019. 3. 13.
[함수형 사고] 6장 전진하라 사용하는 언어의 패러다임이 객체지향이러면 문제의 해법을 객체 지향적으로 찾게 됩니다. 하지만 현대의 스칼라같은 언어들은 멀티 패러다임을 지향합니다. 자바도 람다함수를 도입하면서 함수형 언어의 패러다임을 도입하였습니다. 따라서 문제에 적합한 패러다임을 사용하는 방법을 배우는 것이 더 좋은 개발자로 진화하는 길 중의 하나입니다. 함수형 언어의 디자인 패턴 함수형 프로그래밍에서 디자인 패턴은 다음의 세가지로 나타납니다. 첫째, 디자인 패턴은 언어나 런타임에 흡수 될 수 있습니다. 클로져의 ?. 문법이나, 스칼라의 커링과 같은 문법적 설탕이 이 역활을 지원합니다. 둘째, 패턴들은 그 의미를 보존하면서 다른 의미로 구현될 수 있습니다. 플라이웨이트 패턴은 메모이제이션 같은 기능을 이용하여 구현할 수 있습니다. 셋.. 2019. 3. 13.
[함수형 사고] 5장 진화하라 함수형 언어에서의 코드 재사용은 객체지향 언어와는 접근 방법이 다릅니다. 객체지향 언어는 많은 자료구조와 거기에 딸린 연산을 포함하는 클래스를 이용합니다. 함수형 언어는 적은 수의 자료구조(list, set, map)와 공통된 연산(filter, map, reduce)을 제공하고 사용자가 특정한 경우에 맞는 함수를 제공하여 작업을 커스터마이즈함으로써 재사용을 장려합니다. 함수형 언어가 소프트웨어에서 반복되는 문제들의 해결방법을 어떻게 진화시켜 왔는지 알아보겠습니다. 적은 수의 자료구조, 많은 연산자 100개의 함수를 하나의 자료구조에 적용하는 것이 10개의 함수를 10개의 자료구조에 적용 하는 것보다 낫다. -앨런 펄리스 객체지향 언어에서는 특정한 메소드가 구현되 자료구조를 개발자가 만들기를 권장합니다... 2019. 3. 12.
[함수형 사고] 4장 열심히보다는 현명하게 함수형 사고로 패러다임을 바꾸면 더 적은 노력으로 더 많은 일을 할 수 있게 됩니다. 함수형 프로그래밍의 많은 구조들이 그렇습니다. 절차형 언어에서 볼 수 있는 문제들을 구현할 때 짜증 나던 것들을 제거해 줍니다. 메모이제이션 메모이 제이션은 연속해서 사용되는 연산값을 함수 레벨에서 캐시하는 것을 말합니다. 메모이제이션은 캐싱을 이용하여 처리합니다. 캐싱을 이용하기 위해서는 주어진 매개변수의 값만을 이용하고, 외부 데이터에 영향을 받지 않는 순수 함수를 이용해야 합니다. 다음은 스칼라에서 피보나치 함수를 캐싱을 이용하여 구현한 예제입니다. 처리 결과를 보면 다음처럼 2번째 처리부터 처리시간이 단축되는 것을 볼 수 있습니다. Time taken: 9275948 ms 832040 Time taken: 280.. 2019. 3. 11.
[함수형 사고] 3장 양도하라 컴퓨터의 성능이 향상되고 런타임의 처리 성능이 향상됨에 따라 개발자는 가비지 콜렉션 같은 저수준의 세부사항 조작을 더 이상 신경쓰지 않고, 고수준의 처리 로직만 고민하면 되게 되었습니다. 함수형 언어에서 이를 지원하는 네가지 방식을 살펴 보겠습니다. 반복처리에서 고계함수로(명령형에서 서술형으로)for문을 이용한 반복 처리 대신 map과 같은 함수를 이용하여 반복 처리의 제어를 런타임에 넘길 수 있습니다. 고계함수로 반복 처리할 연산이 무엇인지 알려주면 런타임이 효율적으로 이를 처리하여 줍니다. 병렬처리를 원한다면 par, parallelstream을 이용하면 스레드 관리를 신경쓰지 않아도 처리해줍니다. 멀티스레드 관리는 코드를 짜기도 어렵고 디버그 하기도 어려워서 오류가 많이 발생합니다. 하지만 함수형 .. 2019. 3. 8.
[함수형 사고] 2장 전환 함수형 문법을 익히는 것은 쉽지만, 함수형 사고라는 새로운 패러다임을 익히는 것은 어렵습니다. 새로운 패러다임을 익히는 것은 친숙한 문제에 대한 다른 해답을 떠올릴 능력을 익히는 것입니다. 명령형 처리와 함수형 처리 명령형 처리는 전통적인 프로그래밍 방식입니다. 문제를 명령형 루프내에서 처리합니다. 다음은 자바로 작성한 코드입니다. 리스트로 문자열을 받아서 한자리 문자열은 제거하고, 나머지 문자열은 첫번째 글자를 대문자화한후 스트링으로 만들어 출력합니다. 함수형 처리는 언어에서 제공하는 함수를 이용하여 서술형으로 문제를 처리합니다. 개발자는 문제를 처리하는 방식보다는 세부적인 로직에 집중할 수 있습니다. 다음은 동일한 코드를 스칼라를 이용하여 함수형으로 처리한 예제입니다. filter, map, redu.. 2019. 3. 5.
[함수형 사고] 1장 왜? 한빛미디어, 오라일리에서 발간한 함수형사고(Functional Thinking)의 내용 중 필요한 부분만 정리하였습니다. 함수형으로 사고해야 하는 이유는 무엇인가?현재 모든 언어에서 기본적으로 사용하는 객체지향 개념이 처음부터 사용된 것은 아니다. 1967년 시뮬라 67에서 나온 개념이지만 1983년 C++이 보편화 되면서 널리 사용되었다. 언어의 트렌드가 변화하고 있다. 각 언어들이 함수형 프로그래밍을 지원하고 있다. 자바, C#, 자바스크립트에 람다 함수가 사용되고 있고, 클로져, 스칼라 등 함수형 언어가 등장하고 있다. 하드웨어의 발달로 저수준의 제어 보다는 고수준의 제어에 좀더 집중하는 것이 가능해 졌다. 간결함 함수형 언어는 기존 언어의 명령형 프로그래밍 보다 간결하게 함수형 프로그래밍을 할 수.. 2019. 3. 4.
[개념] 프로그래밍에서 보일러플레이트(boilerplate)의 뜻 보일러플레이트는 프로그래밍에서 상용구 코드를 말합니다. 어떤일을 하기위해서 꼭 작성해야 하는 코드로 자바에서는 클래스의 getter, setter 메소드를 말합니다. 자바에서 getter, setter는 꼭 필요하지만 코드의 길이를 길어지게 하고 개발자에게 의미없는 노동을 강요하게 됩니다. 이부분이 자바의 단점 중 하나입니다. 그래서 스칼라에서는 케이스 클래스를 통해 컴파일러에서 자동으로 작업을 처리할 수 있게 도와줍니다. 자바에서도 롬복을 이용하여 이부분을 자동으로 생성하게 할 수 있습니다. 롬복 참고문서 바로가기롬복 깃허브 바로가기 2019. 2. 27.
[개념] HTTPS SNI 필드 차단 이번에 시행된 HTTPS SNI 필드 차단에 대해서 간단하게 정리하겠습니다. 이번 차단은 HTTPS 프로토콜이 처음에 접속하고자 하는 서버의 정보를 얻기 위해 DNS와 TLS 통신을 통해 암호화를 위한 키값을 얻어 옵니다. 이때 이용하는 것이 SNI 필드이고 접속하고자 하는 서버의 도메인정보를 가지고 있으며 암호화 되지 않습니다. 즉, 택배를 보낼때 송장의 주소는 암호화 하지 않는 것을 이용하여 송장의 주소를 이용해서 접속을 막는 것입니다. 이 부분은 DNS를 1.1.1.1로 설정하여 우회할 수 있습니다. 1.1.1.1은 클라우드플레어라는 기업에서 운영하는 DNS입니다. 모바일에서는 클라우드플레어의 앱을 이용하여 간단하게 적용할 수 있습니다. SNI 차단이 뭐야? TLS 1.3은 해결책이 될 수 있을까... 2019. 2. 15.
[개념] 데이터 직렬화(serialization), 역직렬화(deserialization) 프로그래밍에서 데이터 직렬화(serialization)는 메모리의 객체를 디스크에 저장하거나, 네트워크를 통해 전송되는 형식으로 변환되는 작업입니다. 역직렬화(deserialization)는 디스크에 저장된 데이터를 읽거나, 네트워크를 통해 전송된 데이터를 받아서 메모리에 재구축하는 것입니다. 데이터는 CSV, XML, JSON, binary 형식으로 다양하게 직렬화 될 수 있습니다. CSV, XML, JSON 등의 형식은 사람이 읽을 수 있지만, 저장 공간의 효율성이 덜어지고 파싱하는 시간이 오래 걸립니다. binary는 사람이 읽을 수 없지만 파싱 시간이 짧습니다. 데이터의 양이 작을 때는 파싱시간이 문제가 되지 않지만, 빅데이터의 경우 파싱시간이 문제가 될 수 있습니다. 이를 해결하기 위해서 에이브.. 2019. 2. 8.
[개념] Elasticsearch, Logstash, Kibana Elasticsearch루씬 엔진 기반의 검색 엔진json 형식의 문서를 기반으로 하는 검색 엔진오픈 소스 Logstash자바를 기반으로 다양한 로그들을 처리할 수 있는 로그 수집 엔진 Kibana데이터 시각화 도구 Elastic Stack로그 수집(Logstash), 검색(Elasticsearch), 시각화(Kibana) 도구를 모아서 처리하는 스택 2018. 3. 13.
[개념] 해시(Hash) 함수 해시 함수는 임의의 길이의 데이터를 고정길이로 매핑하는 함수이다. 해시 충돌은 이 해시 함수의 결과 값이 동일하게 나오는 경우를 말한다. hash(a) = hash(b) 인경우 해시 충돌이다. 충돌 위험성이 적을 수록 훌률한 해시 함수이다. 주로 sha, md5 방식을 이용하여 구현한다. 2017. 11. 22.
[개념] 데드락(deadlock) Deadlock두개의 프로세스가 서로의 작업이 종료되기를 기다리면서 대기하는 것이다. 교착상태의 네가지 조건상호배제: 프로세스들이 필요로 하는 자원에 대해 배타적인 통제권을 요구점유대기: 할당된 자원을 가진 상태에서 다른 자원을 기다림비선점: 프로세스가 어떤 자원의 사용을 끝낼때까지 그 자원을 뺏을 수 없다. 순환대기: 프로세스가 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있다. Starvation프로세스가 작업을 대기하는 중 우선순위가 높은 작업이 종료되지 않아서 계속 대기하는 상태 Race Condition프로세스들 끼리 하나의 자원을 갖기 위해 싸우는 것 https://ko.wikipedia.org/wiki/%EA%B5%90%EC%B0%A9_%EC%83%81%ED%83%9C 2017. 11. 21.
[개념][데이터베이스] 칼럼지향 데이터베이스(columnar database) 데이터의 저장을 칼럼단위로 처리하는 데이터베이스를 말한다. 칼럼 단위의 값은 데이터가 유사할 가능성이 높다. 이로 인해 높은 압축율을 얻을 수 있다. MIN, MAX, SUM, COUNT 와 같은 연산에서 높은 성능을 얻을 수 있다. 아마존 Redshift, 아파치 Cassandra, HBase 등이 있다. 컬럼 지향 데이터베이스는 데이터를 컬럼 단위로 묶어서 저장한다. 그런 다음 이 컬럼값은 디스크 상에 연속적으로 저장된다. 이 방식은 전통적인 데이터베이스의 전체 로우가 연속적으로 저장되는 일반적인 로우 지향형 접근방식과 다르다. 컬럼 기반으로 데이터를 저장하는 이유는, 특정 쿼리에 대해서는 로우의 모든 데이터가 필요하지 않다는 가정에 기반하고 있다. 이러한 경우는 특히 분석적인 데이터베이스에서 자주 .. 2016. 12. 13.
[java] 디자인패턴 [Creational] 1. Factory Method Pattern - 이 패턴은 다른 패턴에서 전반적으로 사용이 된다.- 동일한 인터페이스를 상속하는 클래스를 만들고, 인터페이스에 따른 클래스를 생성하는 패턴 2. AbstractFactoryPattern - Factory Method Pattern를 보강하는데 도움을 준다. 3. BuilderPattern - Factory Method Pattern와 비교해 보라구 하네요. 4. SingletonPattern - AbstractFactoryPattern을 만드는데 이용된다. 5. PrototypePattern - 아마도 가장 복잡한 creational pattern일 것이다. CommandPattern과 같이 이용된다. [Structural] 1. .. 2016. 12. 4.
[개념] NiFi (Niagarafiles, 나이아가라파일) - 데이터 이동 모니터링 기술 나이아가라파일의 약자(Niagarafiles, NiFi)- 미국 국가안보국이 만들고 오픈소스로 공개- 아파치 재단에서 관리 - 이기종 시스템간의 네트워크 데이터 이동을 자동화하고 모니터링 하기 위한 프로젝트 - 데이터의 형식, 프로토콜이 달라도 분석 가능- JVM 위에서 동작 블로터 - http://www.bloter.net/archives/213898NiFi 홈페이지 - https://nifi.apache.org/docs.html 2016. 11. 24.
[개념] 프록시 서버 클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터나 응용프로그램을 말한다. 서버와 클라이언트 사이에서 중계기로서 대리로 통신을 수행하는 기능을 '프록시', 중계 기능을 수행하는 서버를 '프록시 서버'라고 한다. [목적]- 반복된 요청을 캐싱하여 웹서버의 속도를 향상- 사이트 접속 정책의 적용을 위하여- 사용율을 기록하고 검사하기 위하여 [스퀴드]- 프록시 서버 프로그램(http://www.squid-cache.org/) 2016. 11. 7.
[정보] IMEI(International Mobile Equipment Identity) IMEI는 WCDMA 휴대폰 기기에 내장되어 있는 인식번호이다. 이 번호는 단말기의 제조사, 모델등의 정보를 포함하고 있다 - 전화를 걸 수 있는 다이얼 화면에서 *#06# 을 누르면 IMEI가 나옴.- 안드로이드: 설정 -> 휴대폰정보 -> 상태 -> IMEI 나옴- 아이폰: 설정 -> 일반 -> 정보 -> IMEI 나옴 휴대폰의 유일 인식번호가 IMEI이다. 2016. 10. 11.
[개념] 마이크로 서비스(Microservice Architecture. MSA) 마이크로서비스의 반대되는 개념이 모노리스서비스입니다. 기존에 운영하던 시스템은 모든 서비스가 하나의 시스템에 구현되어 있었습니다. 쇼핑몰을 예로 들면 정산, 판매, 입고 시스템이 하나의 서비스로 운영되는 구조입니다. 모노리스서비스로 개발된 애플리케이션의 경우 시스템이 커질수록 빌드 배포가 어렵고 복잡해집니다. 이러한 문제점을 해결하기 위하여 나타난 개념이 마이크로 서비스이다. 마이크로서비스는 애플리케이션의 구성요소를 특정 목적별로 분리한되 독립적으로 작동할 수 있는 작은 서비스로 만들고, 이 서비스들을 조합하여 완성된 애플리케이션으로 조립하는 개발형태를 말한다. 이때 각 서비스들은 API와 HTTP를 이용한 REST Api를 이용하여 연결한다. 각 서비스들은 독립적으로 존재하고 작동하며, 각자 관리 및 .. 2016. 9. 26.
[개념] 서버리스 구조(Serveless Architecture) 서버를 관리할 필요 없이 특정 이벤트에 반응하는 함수(주로 파이썬으로 구현)를 등록하고, 해당 이벤트가 발생하면 함수가 실행되는 구조이다. 서버 관리에 대한 리스크가 사라진 구조라고 할 수 있다. (누군가는 서버를 관리해야 하겠지만, 서비스 운영 담당자가 관리하는 것은 아님)Function as a Service 와 동일한 개념AWS Lambda 서비스가 서버리스 구조를 지원 - 중앙 집중형 애플리케이션 구조- 애플리케이션 재배포시 서비스 중단 발생- 장애 발생시 서비스 중단 시간이 상대적으로 길다. - 디스크/네트워크/메모리 등 시스템 자원에 대한 직접적인 운영이 필요 이러한 문제점이 발생할 수 있기 때문에 서버리스 구조를 이용한다. - 비용절감: Event Running- 서비스 지향: 마이크로 서비.. 2016. 6. 27.