Study 11

Troubleshooting - ERR_CONNECTION_RESET 해결 기록

개발계에 신규 Application 배포 중 로컬에서는 정상적으로 접근이 되는데, 외부에서는 정상적으로 접근이 되지 않는 현상 (ERR_CONNECTION_RESET)이 발생되어 이를 해결한 내용을 기록해놓고자 한다. 트래픽 흐름은 LB → WAF → VM 순서로 트래픽이 흐르게 된다. 1. ERR_CONNECTION_RESET? 이 외국계 블로그에 따르면 ERR_CONNECTION_RESET은 Browser가 정상적인 패킷 대신 FIN Packet을 받아서 발생하는 것이라고 한다. 구글에 검색해보면 일반적으로 브라우저단에서 처리하는 해결방법이 나오는데, 이번 사례는 브라우저단에서 해결할 수 있는 내용이 아닌 것 같아 관련된 내용은 생략한다. 2. 서버에서는? 서버에 와이어샤크를 설치하고 특정 TCP S..

Study 2021.02.02

AWS Lambda/Kinesis Stream Best Practice

개요 Kinesis Stream을 Lambda와 연계시키기 위해서는 Event source mapping을 중간에 설정해주어야 한다. 물론 어려운 과정은 아니며, 이렇게 되면 아래와 같은 Data Flow가 구성된다. 이러한 아키텍처가 구성되었을 때, 어떻게 해야 고가용성/고성능의 아키텍처를 구현할 수 있을까에 대해 글을 써보고자 한다. Scale Out 먼저, Kinesis Stream으로 유입되는 데이터가 많아졌을 경우, 어떤 대응이 필요한지에 대해 고민해보았다. 간단히 생각해보면, Shard의 개수를 늘리면 되는데, 이 때 과연 Lambda는 어떻게 확장해주어야 하는가? 결론적으로, Kinesis Stream에서 Shard가 증가하게 되면 이것의 개수만큼 Lambda 개수가 자동으로 늘어나게 된다...

Study 2020.06.07

Python Testing 기법 기초 내용 정리

Python Testing 기법 Mocking 단위 테스트를 작성할 때 외부에 의존하는 부분을 임의의 가짜로 대체하는 기법 Patching mock.patch unittest.mock.patch(target, new=DEFAULT, spec=None, create=False, spec_set=None, autospec=None, new_callable=None, **kwargs) patch()는 함수 데코레이터, 클래스 데코레이터 또는 컨텍스트 관리자 역할을 합니다. 함수 본문이나 with 문 내부에서, target은 new 객체로 패치됩니다. 함수/with 문이 종료될 때 패치가 복구됩니다. new가 생략되면, 대상(target)은 패치된 객체가 비동기 함수이면 AsyncMock으로, 그렇지 않으면 M..

Study 2020.06.07

Learn JMeter in 60 minutes

https://www.youtube.com/watch?time_continue=2731&v=UUFi94tx9uI&feature=emb_title JMeter는 아래 위키피디아 설명과 같이 자바기반 오픈소스 테스트 솔루션으로, 구글링을 하다가 JMeter에 관한 좋은 자료가 있어 포스팅한다. Apache JMeter is an Apache project that can be used as a load testing tool for analyzing and measuring the performance of a variety of services, with a focus on web applications. 내용은 자체 서버에 테스트용 블로그인 Ghost를 띄워놓고 JMeter를 통해 이것저것 기본적인 테스..

[Ansible] OS 별 include_tasks 분기

Packer 구성 중 Provisionor로 Ansible를 사용하여 초기 이미지를 셋팅하는 환경을 구성하였다. 이 때 향후 확장성을 고려하여 각 OS 별(예 : Ubuntu 18.04, Redhat 7 등)로 Role에서 각각의 Task를 타도록 구현하고자 하였다. 즉, 아래와 같은 Flow로 구성된다. packer build → Ubuntu_18.json → playbook.yml → roles/SSI/tasks/main.yml → (OS별 분기) roles/SSI/tasks/Ubuntu_18.yml 해당 구성을 위해서는 include_tasks를 사용해주면 된다. Ubuntu_18/roles/SSI/tasks/main.yml --- # tasks file for SSI - name: select O..

Study 2020.05.31

AWS Kinesis Stream - I

kinesis is a managed alternative to Apache Kafka. - Data is automatically replicated synchronously to 3AZ Kinesis Stream, Analytics and Firehose Kinesis Data Flow AWS Kinesis Stream Overview - Stream은 Shard와 Partitions으로 나뉨 - Data Retention is 24 hours by default(7일까지 보관 가능) - 여러 애플리케이션이 동일한 Stream을 소비할 수 있음 - 한번 Kinesis로 들어온 데이터는 삭제할 수 없음 (Immutability) Shard 샤드는 스트림에서 고유하게 식별되는 데이터 레코드 시퀀스입니다...

(2020-05-06) Automated Testing for Terraform, Docker, Packer, Kubernetes, and More

목차 Terraform, Docker, Packer와 같은 infrastructure code를 Terratest를 이용하여 테스트하는 방법을 소개해주는 강의이다. Terratest를 만든 gruntwork.io의 창업자 중 한명이 직접 강의하는 강의를 해주어서 그런지 설명을 쉽게 잘 해준다. Terraform 기준으로 내용을 정리하겠다. Static analysis (정적 분석) 배포 없이 코드를 테스트하는 것으로, 문법적, 일반적인 에러를 처리할 수 있다. 아래와 같은 카테고리로 분류할 수 있다. Compiler / Parser / interpreter Linter Dry run 1. Compiler / Parser / Interpreter terraform validate, packer valida..

[HackerRank - Arrays] 2D Array - DS

https://www.hackerrank.com/challenges/2d-array/problem?h_l=interview&playlist_slugs%5B%5D=interview-preparation-kit&playlist_slugs%5B%5D=arrays 2D Array - DS | HackerRank How to access and use 2d-arrays. www.hackerrank.com 해커랭크사이트의 Interview Preparation Kit, Array 파트의 첫 번째 문제이다. 6 x 6 크기의 배열이 문제에서 주어지게 되는데, 문제에서는 아래와 같은 모래시계 모양의 subnet array 최대값을 구하도록 요구된다. (1이 있는 자리를 보면 알 수 있다) y와 x index를 for문..