Programming 94

(SpringFrameWork) Dependency 오류 시 봐야할것. dependencies could not be resolved

늘 사용하던 환경이 아닌 새로운 환경에서 SpringFramework 세팅을 하다보면 여러 난관에 봉착한다. 회사마다 특정 Private Nexus Central Repository에 연동하는 경우도 많고 보안적인 이유때문에 인증서관련 네트워크 문제도 있다. 이럴때 우선 하나하나 체크해가며 확인해보자. 참고로 Maven Build를 기준하여 설명한다. [Run As]-[Maven Clean]을 하고 [Maven Build]를 하자. 만약 Dependency문제가 있으면 'dependencies could not be resolved...' 라고 뜰것이다. 1. Maven settings.xml 확인 ~/maven/conf/settings.xml 을 에디터로 열어 Central Repository가 어디인..

Programming/Java 2022.01.20

(Python) Pytest로 Unit-test 구현하기

소스 다운로드 : https://github.com/armyost/miniterWithPytest.git armyost/miniterWithPytest This is frame of twitter back-end. Sign-up, Login with JWT, Follow, Unfollow, tweet. And it has pytest also(/test). MVC model project - armyost/miniterWithPytest github.com unit test는 UI test 나 integration test처럼 시스템을 실제로 실행하여 테스트를 진행하는 방식과는 많이 다르다. unit test는 코드를 테스트하는 개념이다. 우선 가상환경에서 pip로 pytest 모듈을 설치하자. pip ..

Programming/Python 2021.05.31

(Python) 트위터 메인프레임만들기

소스 다운로드 : https://github.com/armyost/miniterWithPytest.git armyost/miniter flask를 사용한 백엔드 1. Contribute to armyost/miniter development by creating an account on GitHub. github.com app.py를 실행시키면 완성본이 실행됩니다. 기능은 회원가입, 팔로우/언팔로우, 트윗, 타임라인 입니다. Python에서 Contoller는 다음과 같이 구현됩니다. @app.route("/signup",method=['POST']) def signup(): // 함수정의 Flask가 받은 Json을 파싱하여 사용하는 것은 간단하다. @app.route("/signup",method=[..

Programming/Python 2021.05.04

깔끔한 파이썬 탄탄한 백엔드 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