Programming 91

깔끔한 파이썬 탄탄한 백엔드 2. HTTP 구조와 이해 - 비제이퍼블릭

HTTP는 웹상에서 서로 다른 서버 간에 하이퍼텍스트 문서, 즉 HTML을 서로 주고받을 수 있도록 만들어진 프로토콜, 통신 규약이다. 웹상에서 네트워크를 통해 서버 사이에 통신할 때 어떠한 형식으로 서로 통신하자고 규정해 놓은 "통신 형식" 혹은 "통신 구조"라고 보면 된다. HTTP 통신 방식에는 2가지 특징이 있다. 하나는 HTTP의 요청과 응답 방식이고 또 다른 특징은 stateless다. HTTP 요청과 응답 먼저 HTTP 프로토콜에 대해서 이해해야 할 것은, HTTP는 기본적으로 요청과 응답의 구조로 되어 있다는 것이다. HTTP를 기반으로 통신할때 클라이언트가 먼저 HTTP 요청을 서버에 보내면 서버는 요청을 처리한 후 결과에 따른 HTTP응답을 클라이언트에게 보냄으로써 하나의 HTTP 통신..

Programming/Python 2021.05.02

깔끔한 파이썬 탄탄한 백엔드 1. 환경 설치 - 비제이퍼블릭

Flask Flask는 파이썬으로 웹 에플리케이션을 구현할 때 사용되는 프레임워크다. Flask의 홈페이지에 나온 공식적인 설명은 "micro web framework"이다. 즉 군더더기가 없는 아주 가벼운 웹 프레임워크라는 뜻이다. 파이썬 기반의 웹프레임워크에는 Flask 이외에도 Django등 다른 여러 웹 프레임워크가 있다. 하지만 다른 웹프레임워크들은 여러 모듈과 기능들을 제공하느라 프레임워크 자체가 무겁고, 학습곡선이 높을수 있는데 비해 Flask는 비교적 쉽게 배워서 사용할 수 있다. Flask 설치 Flask는 pip을 통해서 간단하게 설치할 수 있다. pip는 파이썬의 패키지 메니저다. pip를 사용하여 터미널 등의 커맨드라인 환경에서 간단하게 원한는 파이썬 패키지들을 설치할 수 있다. c..

Programming/Python 2021.05.02

[완독정리]스프링 마이크로서비스 코딩 공작소 9. 스프링 클라우드 슬루스와 집킨을 이용한 분산 추적-길벗

- 상관관계 ID를 사용해 여러 서비스 사이의 트랜잭션을 서로 연결한다. - 여러 서비스 사이의 로그 데이터를 검색 가능한 단일 소스로 수집한다. - 여러 서비스 사이의 사용자 트랜잭션 흐름을 시각화하고 트랜잭션 각 부분의 성능 특성을 이해한다. 이 세가지 사항을 만족하기 위해 세가지 다른 기술을 사용한다. - 스프링 클라우드 슬루스 : 상관관계ID를 사용해 HTTP 호출을 측정한는 스프링 클라우드 프로젝트이며, 생성 중인 추적 데이터를 오픈 집킨에 공급할 수 있는 연결고리를 제공한다. - 페이퍼트레일 : 여러 데이터 소스의 로그 데이터를 검색이 가능한 단일 데이터베이스로 수집하는 클라우드 기반의 프리미움 서비스다 - 집킨 : 여러 서비스 사이의 트랜잭션 흐름을 보여주는 오픈 소스 기반의 데이터 시각화 ..

Programming/MSA 2021.03.07

[완독정리]스프링 마이크로서비스 코딩 공작소 8.메시지와 EDA, 마이크로서비스의 사례-길벗

마이크로서비스에서의 캐싱 - 캐싱된 데이터는 서비스의 모든 인스턴스에 일관성이 있어야 한다. - 컨테이너 메모리에 조직데이터를 캐싱해서는 안된다. 서비스를 호스팅하는 런타임 컨테이너는 종종 크기 제약이 있으며 다양한 엑세스 패턴으로 데이터를 엑세스한다. - 업데이트나 삭제 연산으로 레코드가 변경될 때 서비스는 상태 변화를 인식해야 한다. 동기식 요청-응답 방식으로 상태 변화 전달의 특징 - 서비스간 강한 결합 - 쉽게 깨지는 서비스 관계 - 조직 서비스 변경에 관심있는 새 소비자를 추가할 때 경직성 메시징을 사용해 서비스 간 상태 변화 전달의 특징 - 메시징 방식을 사용하면 서비스 사이에 큐를 삽입한다. 데이터의 상태가 변할때 메시지를 발행하여 변경사항을 전달한다. - 느슨한 결합 - 내구성 - 확장성 ..

Programming/MSA 2021.03.06

[완독정리]스프링 마이크로서비스 코딩 공작소 7.마이크로서비스의 보안-길벗

OAuth2 소개 토큰기반의 보안 인증과 인가 프레임워크로 다음 4개의 컴포넌트로 구성된다. 1. 보호자원 : 보호하려는 자원이며 적절한 권한을 부여받은 인증된 사용자만 엑세스 할 수 있다. 2. 자원 소유자 : 서비스를 호출할 수 있는 애플리케이션 및 서비스에 접근 할 수 있는 사용자 그리고 서비스에서 수행할 수 있는 작업을 정의한다. 3. 애플리케이션 : 사용자를 대신해 서비스를 호출할 애플리케이션이다. 4. OAuth2 인증 서버 : 애플리케이션과 소비되는 서비스 사이의 중계자다. 토큰 생성 엔드포인트에 전달되는 모든 매개변수가 HTTP양식 매개변수라고 기대한다. 매개변수로 다음 서비스 정보를 전달해야 한다. 그랜트타입 : 실행할 OAuth2그랜트 타입이다. 스코프 : 애플리케이션을 위한 범위로 애..

Programming/MSA 2021.03.06

[완독정리]스프링 마이크로서비스 코딩 공작소 5.나쁜 상황에 대비한 스프링 클라우드와 넷플릭스 히스트릭스의 클라이언트 회복성 패턴-길벗

서비스 소비자와 서비스 사이에서 완충 역할을 하는 네가지 클라이언트 회복성 패턴 클라이언트 측 부하분산 - 넷플릭스 유레카 같은 서비스 디스커버리 에이전트를 이용해 서비스의 모든 인스턴스를 검색한 후 해당 서비스 인스턴스의 실제 위치를 캐싱하는것 회로차단기 - 회로차단기는 원격 자원에 대한 모든 호출을 모니터링하고 호출이 필요한 만큼 실패하면 회로 차단기가 활성화되어 빨리 실패하게 만들며 고장난 원격 자원은 더이상 호출되지 않도록 차단한다. 폴백처리 - 실패할때 예외를 발생시키지 않고 서비스 소비자가 대체 코드 경로를 실행해 다른 방법으로 작업을 수행할 수 있다. 벌크헤드 - 각 원격자원에 대한 호출을 자원별 스레드 풀로 분리하므로 특정 원격 자원의 호출이 느려져 전체 애플리케이션이 다운될 수 잇는 위험..

Programming/MSA 2021.03.04

[완독정리] 자바웹을 다루는 기술 5(스프링부트)- 길벗

스프링부트 스프링 프레임워크보다 의존성 관리가 용이할 뿐만아니라 배포 또는 테스트 역시 스프링 프레임워크보다 쉽고 빠르게 할 수 있습니다. 스프링부트로 개발하면 메이븐의 라이브러리 자동 업데이트 기능을 이어받을 수 있을 뿐만아니라 기존 스프링 프레임워크의 복잡한 설정 과정을 최대한 줄일 수 있어 편리합니다. - 일반적인 응용 프로그램을 단독으로 실행하는 수준으로 스프링 애플리케이션을 구현할 수 있습니다. - 프로젝트 환경을 구축할때 필요한 톰캣, jerry, UnderFlow 같은 서버 외적인 툴이 내장되어 있어 따로 설치할 필요가 없습니다. - XML 기반 설정이나 코드없이 환경설정을 자동화할 수 있습니다. - 의존성 관리를 쉽게 자동으로 할 수 있습니다. 구성요소 역할 application.prope..

Programming/Java 2021.02.15

[완독정리] 자바웹을 다루는 기술 4(스프링최종)- 길벗

스프링 애너테이션? DI나 AOP 같은 기능은 따로 XML파일로 설정한 후 애플리케이션에서 사용했습니다. 그러나 애플리케이션의 기능이 복잡해짐에 따라 XML설정파일의 내용도 복잡해졌고 관리에도 문제가 생기기 시작했습니다. 따라서 XML에서 설정하는 방법과 애너테이션 기능을 사용하는 방법 두가지를 혼합해서 사용하고 있습니다. 태그 태그를 사용해 패키지 이름을 지정하면 애플리케이션 실행시 해당 패키지에서 애너테이션으로 지정된 클래스를 빈으로 만들어 줍니다. 애너테이션 기능 @Controller 스프링 컨테이너가 component-scan에 의해 지정한 클래스를 컨트롤러 빈으로 자동 변환 @Service // 서비스빈으로 자동변환 @Repository // DAO빈으로 자동변환 @Component // 빈으로..

Programming/Java 2021.02.10

[완독정리] 자바웹을 다루는 기술 3(스프링, 마이바티스)- 길벗

마이바티스란? 기존 JDBC로 개발할 경우 반복적으로 구현해야 할 SQL문도 많을 뿐만 아니라 SQL문도 복잡합니다. 기존의 JDBC의 경우 다음 과정을 거쳐야 했습니다. connection → Statement 객체 생성 → SQL문 전송 → 결과반환 → close 이 방식의 단점은 SQL문이 프로그래밍 코드에 섞여 코드를 복잡하게 만든다는 것입니다. 이를 개선해 가독성을 높여 사용하기 편하게 만든 것이 바로 마이바티스 프레임워크 입니다. - SQL실행결과를 자바 빈즈 또는 Map객체에 매핑해주는 Persistence 솔루션으로 관리합니다. 즉 SQL을 소스코드가 아닌 XML로 분리합니다. - SQL문과 프로그래밍 코드를 분리해서 구현합니다. - 데이터소스 기능과 트랜잭션 처리 기능을 제공합니다. 마이..

Programming/Java 2021.02.09

[완독정리] 자바웹을 다루는 기술 1- 길벗

서블릿이란 : 서블릿은 서버 쪽에서 실행되면서 클라이언트의 요청에 따라 동적으로 서비스를 제공하는 자바클래스입니다. - 서버쪽에서 실행되면서 기능을 수행합니다. - 기존의 정적인 웹 프로그램의 문제점을 보완하여 동적인 여러가지 기능을 제공합니다. - 스레드 방식으로 실행됩니다. - 자바로 만들어져 자바의의 특징을 가집니다. - 컨테이너에서 실행됩니다. - 컨테이너 종류에 상관없이 실행됩니다.(플랫폼 독립적) - 보안기능을 적용하기 쉽습니다. - 웹 브라우저에서 요청시 기능을 수행합니다. MIME-TYPE : 서버에서 웹 브라우저로 데이터를 전송할 때는 어떤 종류의 데이터를 전송하는지 웹 브라우저에 알려줘야 합니다. 그 이유는 웹 브라우저가 전송 받을 데이터의 종류를 미리 알고 있으면 더 빠르게 처리할 수..

Programming/Java 2021.02.09