전체 446

[EagleEye][서비스구현] Spring으로 간단 서비스 구현

https://pythaac.tistory.com/424 [EagleEye][환경세팅] 채팅 서버 설치 (Vartalap) - 2차 시도 https://pythaac.tistory.com/423 [EagleEye][환경세팅] 채팅 서버 설치 (Vartalap) - 1차 시도 https://github.com/pythaac/chat-server GitHub - pythaac/chat-server: A chat server based on the microservice.. pythaac.tistory.com Vartalap 포기 이미 구현된 채팅서버로 모니터링을 시도하려 했었음 어찌저찌 Docker에 올려보는 테스트까지는 성공 - 사전지식이 부족해서 많이 해맸음 1. 모니터링 대상이 모호 - 무엇을 모니터링..

만들기/EagleEye 2022.05.12

[웹] MVC 패턴의 5가지 계층

프리젠테이션 계층 (Presentation Layer) 제어 계층 (Control Layer) 비즈니스 로직 계층 (Business Logic Layer) 퍼시스턴스 계층 (Persistence Layer) 도메인 모델 계층 (Domain Model Layer) "스프링 부트를 활용한 마이크로 서비스 개발"이라는 책의 목차 중, "3계층 스프링 부트 애플리케이션"이라는 내용이 궁금하여 찾아보게 됨 프리젠테이션 계층 역할 사용자 인터페이스 (메뉴판) 기능 사용자가 선택할 수 있는 기능 표시 주의 모든 요청이 제어 계층을 통해 처리되어야 함 - 비즈니스 로직, 퍼시스턴스 계층에서 처리하는 일을 직접 수행해서는 안됨 - 각 계층의 컴포넌트와 직접적인 통신이 있어선 안됨 패턴 Composite View 제어 계..

CS/웹 2022.05.11

[개발론][테스트] Mock

정의 테스트를 위해 의존하는 객체를 가짜로 만들어 사용하는 방법 필요한 이유 단위테스트에서 실행하는 메서드가 다른 네트워크, 데이터베이스 등 복잡한 의존성을 가진 경우 사용하는 경우 테스트 환경 구축이 어려운 경우 - 데이터베이스 설치, 서버 구성 특정 경우에 의존적인 경우 - 수많은 테스트 중에 하나의 테스트만 네트워크/데이터베이스를 통한 결과가 필요 테스트 시간이 오래 걸리는 경우 기본 분류 테스트 더블 - 테스트 진행이 어려울 때 대신 진행할 수 있도록 만들어주는 객체 - Mock 객체와 유사하며 더 상위 의미 더미 객체 - 단순하게 인스턴스화되는 수준으로만 객체를 구현 - 인스턴스가 필요할 뿐, 객체 기능은 필요하지 않는 경우 사용 테스트 스텁 (Test Stub) - 더미 객체가 실제 동작하는 ..

CS/개발론 2022.05.10

[클라우드] Service Discovery

정의 서비스 클라이언트가 서비스 호출을 위해 IP주소, Port를 알아내는 기능 사용 이유 - MSA에서 분산된 서비스간의 원격 호출과 클라우드 환경에서 오토 스케일링 등의 동적 환경으로 서비스의 IP 변동이 잦아짐 동작 (Client side discovery) 서비스 인스턴스 생성시 주소를 Service Registry에 등록 해당 서비스 호출시 클라이언트는 Service Registry에 주소를 물어보고 호출 Client side discovery vs Server side discovery Client side discovery 클라이언트가 Service Registry에서 서비스 위치를 찾아 호출하는 방식 Server side discovery proxy(LB)가 호출을 받고 LB에서 Servi..

[클라우드] 마이크로서비스 아키텍처

http://guruble.com/마이크로서비스microservice-아키텍처-그것이-뭣이-중헌디 마이크로서비스 아키텍처. 그것이 뭣이 중헌디? Table of Contents. 마이크로서비스 아키텍처 API Gateway 이벤트-주도(Event-Driven) 데이터 관리 분산된 데이터베이스에서 트랜잭션 관리 이슈 이벤트 주도 아키텍처(Event-Driven Architecture) Summary 마이크로서 guruble.com 정의 마이크로서비스 - 하나의 큰 애플리케이션을 여러 개의 서로 다른 역할을 수행하는 애플리케이션으로 분리했을 때 각 애플리케이션 마이크로서비스 아키텍처 - 마이크로서비스들로 쪼개어 변경과 조합이 가능하도록 만든 아키텍처 마이크로서비스 아키텍처는 언제 필요한가? 애플리케이션 배포..

[Docker] Docker란

정의 애플리케이션을 신속하게 구축, 테스트, 배포할 수 있는 소프트웨어 플랫폼 컨테이너라는 표준화된 유닛으로 소프트웨어를 패키징 컨테이너에는 라이브러리, 시스템 도구, 코드, 런타임 등 소프트웨어 실행에 필요한 모든 것을 포함 Docker 사용시 환경에 구애받지 않고 애플리케이션을 신속하게 배포/확장하고 코드가 문제없이 실행됨을 보장 사용하는 이유 Docker는 DevOps 및 개발자에게 도움되도록 설계된 개방형 애플리케이션 개발 프레임워크 개발자 Docker를 사용하여 경량의 휴대 가능한 자립형 컨테이너로 애플리케이션을 쉽게 빌드/패키징/배송/실행 운영체제/배포 시스템 등을 걱정하지 않고 애플리케이션 코드에만 집중하면서 사용 가능 오픈소스 컨테이너 애플리케이션 활용 가능 DevOps 지속적인 통합(CI..

[SRE] DevOps란

요약 기존 문제점 개발(Dev)과 운영(Ops)이 분리되어 있음 1) 분리되어있어 서로 책임을 떠넘김 2) 운영 중 발생한 요구사항에 대한 소통이 원활하지 못함 3) 그런 상황에서 비즈니스 요구사항에 따른 변경사항이 자주 배포되면서 개발과 운영 사이 마찰이 커짐 해결 방안 애자일 : 기획과 개발을 합치자 -> 위 3)을 해결 DevOps : 개발과 운영을 합치자 -> 위 2)까지 해결 배경 요구 기술이 상이한 두 영역이 합쳐질 수 있는 이유 1) 인터넷 발전 : 필요한 자료와 강의를 쉽게 접할 수 있음 2) 오픈소스의 발전 : 전세계 개발자들이 함께 이야기하고 일할 수 있는 구조 3) 좋은 도구들 : 개발/빌드/배포/모니터링 등 자동화 가능 4) 클라우드 등장 : 직접 인프라를 구성할 필요가 사라짐 종합..

[클라우드] 클라우드 컴퓨팅 구분

클라우드 컴퓨팅 구분 기준 배치 모델 vs 서비스 모델 배치모델 - 클라우드 인프라의 위치와 운영에 따른 분류 1) 퍼블릭 클라우드 2) 프라이빗 클라우드 3) 하이브리드 클라우드 서비스 모델 - 사용자에게 서비스하는 인프라의 계층 정도에 따른 분류 1) IaaS 2) SaaS 3) PaaS 배치 모델 퍼블릭 클라우드 공공 클라우드 / 개방형 클라우드 특정 기업/사용자가 아닌 모든 사용자를 위한 클라우드 서비스 모델 자원이 각 서비스에서 사용자 별로 권한을 관리/격리 - 데이터 - 기능 - 서버 서비스 사용자간 간섭이 전혀 없음 프라이빗 클라우드 제한된 네트워크에서 특정 기업/사용자를 위한 클라우드 서비스 모델 기업이 자원의 제어권을 가짐 보안이 뛰어남 커스터마이징 (고객의 상황에 따른) 하이브리드 클라..

[클라우드] 컨테이너 기술이란

개요 정의 - 시스템의 나머지 부분과 분리된 1개 이상의 프로세스 세트 배경 - LXC(LinuX Container)부터 시작 - LXC는 단일 머신에 여러 개 독립 리눅스 커널 컨테이너 실행을 위한 OS레벨의 가상화 기법 기능 전통적 테스트 환경 복제에 의존하는 개발 파이프라인보다 더 빠르고 편함 - 네트워크, 스토리지, 보안 등 서로 다른 환경으로 프로그램 실행에 각종 오류 발생 - 다른 환경으로 이동시 안정적으로 실행하기 위한 개념 하이퍼바이저 기반 가상화 기술을 대체하여 각광받음 - 컨테이너 이미지 배포가 새로운 운영체제 설치보다 훨씬 간편 / 비용이 저렴 - Guest OS가 필요한 하이퍼바이저와 달리, 컨테이너는 운영체제 없이 어플리케이션 실행에 필요한 모든 파일만 패키징한 형태 컨테이너 장점..