HTTP 통신 에러 처리(feat. Connection reset by peer)
·
Problem Solved/BackEnd
문제 상황현재 팀에서는 스크래핑 모듈을 운영하고 있다. 우리 회사는 고객들에게 설치를 해주는 방식의 프로그램들이 많기 때문에 해당 프로그램들의 사양에 맞춰 프레임워크 버전을 유지해야 한다. 그래서 현재 총 세 가지 버전의 .NET Framework를 사용하고 있는데 2, 4, 5 이렇게 세 가지 버전의 프레임워크를 사용하고 있다. 현재 팀에서는 고객들의 스크래핑 스케줄을 매 새벽마다 돌리고 있는데, 유독 여신금융협회 스크래핑 모듈만 에러율이 굉장히 높게 발생하고 있었다. 그래서 분석을 해 본 결과.. 2버전과 4버전의 모듈에선 에러가 발생하지 않고 있는데, 5버전에서만 전체 스크래핑 시도 중에 약 14% 정도의 비율로 에러가 발생하고 있었다.. 물론 아침에 출근해서 운영 담당자가 새벽에 일어난 에러에 대..
DataGrip
·
Tools
DataGrip그냥 몇가지 잡다한 DataGrip 툴 사용법 기록  컬럼세팅Primary Key 설정 : keys 란에 primary 체크박스 설정하고 생성하면 Primary Key로 설정된다.Unique Key 설정 : keys 란에 primary 체크박스 해제하고 생성하면 Unique Key로 설정된다.index(key) 설정 : indexes 란에 설정하면 key로 설정된다.
대량 트래픽 처리
·
Server
대량 트래픽 처리널리 알려진 여러 대량 트래픽 해결책들을 알아보며 어떻게 대비할지 상상해보자  서버 업그레이드 방법1. Scale-Up(스케일 업)스케일업은 더 좋은 CPU, 더 많은 RAM 등 서버 컴퓨터의 사양을 올리는 것이다.업그레이드가 비교적 간단하지만, 비용 측면에서 부담이 심하다는 단점이 있다.2. Scale-Out(스케일 아웃)스케일 아웃은 서버의 개수를 추가하는 것이다. 스케일 업에 비해 비용 부담이 적고, 한계가 존재하지 않다는(공간만 있다면 계속 추가할 수 있으니까) 장점이 있다.하지만 여러대의 서버를 둠으로써 메모리를 공유하지 못하기 때문에 로그인 관련 세션 쿠키 공유 문제나 DB 데이터 불일치와 같은 데이터 정합성 문제 가 발생할 수 있다. 그렇다면 데이터 정합성은 어떻게 해결하는가..
HTTP
·
WEB/Common
HTTP웹 개발자라면 모르면 안되는 HTTP 정리  HTTP(HyperText Transfer Protocol) 란?HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 _프로토콜_이다.초기에는 단순 웹 브라우저와 웹 서버 간의 통신을 위해 디자인 되었지만, 최근에는 모바일 앱, IoT 등과의 통신과 같이 다양한 목적으로 사용되고 있다.HTTP는 클라이언트가 요청을 생성하기 위한 연결을 연 다음 응답을 받을 때까지 대기하는 전통적인 클라이언트-서버 모델을 따른다.HTTP는 무상태 프로토콜이며, 이는 서버가 두 요청 간에 어떠한 상태나 데이터를 유지하지 않음을 의미한다. (서버에서는 쿠키, 세션, 토큰 등으로 이를 극복)일반적으로 안정적인 TCP/IP 레이어를 기반으로 사용하는 응용 프로토콜..
REST
·
WEB/Common
REST과연 우리는 REST API를 설계하고 구현해 온것이 맞는가? 라는 의문을 가져볼만한 REST 정리 REST란?REpresentatinal State Transfer의 약자로 자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 모든 것을 의미한다.동작 특징으로 정의하자면,HTTP URI를 통해 자원(Resource)을 명시한다.HTTP Method(GET, POST, PUT, DELETE 등)를 통해 해당 자원에 대한 CRUD 작업을 적용하는 것을 의미한다. REST 구성 요소REST는 다음과 같은 3가지로 구성이 되어있다.자원(Resource): HTTP URI자원에 대한 행위(Verb): HTTP Method자원에 대한 행위의 내용(Representations): HTTP Message P..
싱글톤 패턴(Singleton Pattern)
·
Design Pattern
싱글톤 패턴(Singleton Pattern)가장 널리 사용되는 디자인 패턴 중 하나이며, Spring의 DI 개념에 근간이 되는 싱글톤 패턴 싱글톤 패턴이란?어플리케이션이 시작될 때 어떤 클래스가 최초 한번만 메모리를 할당하고(static) 그 메모리에 인스턴스를 만들어 사용하는 디자인 패턴이다.쉽게 말해 객체의 인스턴스가 오직 1개만 생성되는 패턴이라고 생각하면 된다.인스턴스가 1개만 생성되는 특징을 가진 싱글톤 패턴을 이용하면, 하나의 인스턴스를 메모리에 등록해서 여러 쓰레드가 동시에 해당 인스턴스를 공유하여 사용할 수 있게끔 할 수 있기 때문에 요청이 많은 곳에서 사용하면 효율을 높일 수 있다.다만, 싱글톤을 사용할 때 동시성(Concurrency) 문제를 고려해서 설계해야 한다. 싱글톤 패턴 사..
디자인 패턴의 존재 이유
·
Design Pattern
디자인 패턴의 존재 이유올바른 설계를 효율적으로 하기 위한 교과서라고 볼 수 있는 디자인 패턴 디자인 패턴은 왜 필요할까?좋은 구조를 가진 객체지향 소프트웨어를 설계한다는 것은 쉬운 일이 아니다.좋은 구조를 위해서 고려해야 할 점은 단순 구현이 아닌 확장성, 재사용성과 같은 것들도 같이 고려해야 한다.우리는 개발을 하면서 경험이 쌓이다 보면, 전에 구현했던 코드와 유사한 기능을 구현할 때 이전의 코드들을 되돌아보곤 한다.그렇게 이전 코드를 보며 재사용하기도 하고, 조금 더 개선해서 사용하기도 한다.디자인 패턴은 설계자로 하여금 재사용이 가능한 설계는 선택하고, 재사용을 방해하는 설계는 배제하도록 도와준다.또한 개발자는 디자인 패턴을 통해 레거시 시스템의 유지보수나 문서화도 개선할 수 있고, 클래스의 명세..
스레드 풀(Thread Pool)
·
OS/Common
스레드 풀(Thread Pool)효율적인 작업처리를 위한 멀티 스레딩 기법을 위해 필수적인 스레드 풀 개념 스레드 풀이란?병렬 작업 처리가 많아지면 스레드 개수가 증가되고, 그에 따른 스레드 생성과 스케줄링으로 인해 CPU가 바빠져 메모리 사용량이 늘어난다.이는 애플리케이션의 성능 저하로 이어진다. (스레드는 생성되거나 수거할 때 커널 오브젝트를 동반하는 리소스이므로 생성 비용이 크게 발생한다)병렬 작업의 폭증으로 인한 스레드의 폭증을 막으려면 스레드 풀을 사용해야 한다.스레드 풀은 작업 처리에 사용되는 스레드를 제한된 개수만큼 정해 놓고 작업 큐에 들어오는 작업들을 하나씩 스레드가 맡아 처리한다.작업 처리가 끝난 스레드는 다시 작업 큐에서 새로운 작업을 가져와 처리한다.따라서 작업 처리 요청이 폭증해도..
potatoCompletion
₩$(WonDollar) 개발 지식창고