본문 바로가기

Dev/etc8

MicroService 와 Cloud Native Architecture Cloud Native Architecture기존에서 로컬환경이나 사내에서 구축하고 운영하였던 시스템을 클라우드 환경으로 전환하기 위해서 어떠한 아키텍처를 가져야 하는가?확장 가능한 아키텍처 시스템이 필요에 따라 확장 가능한 형태의 아키텍처로 확장 → 시스템의 수평적 확장에 유연해짐 그와 동시에 확장된 서버로 시스템의 부하분산을 함과 동시에 가용성 보장 가능 스케일업/스케일아웃 스케일업 - 가지고 있는 CPU나 메모리 등을 늘리는 것 스케일아웃 - 같은 사양의 서버 즉 인스턴스를 여러 대 배치함으로써 동시에 많은 사용자들의 요청을 처리할 수 있다. 클라우드 서비스를 제공하는 업체를 이용함으로써 가상의 서버, 가상의 스토리지, 가상의 네트워크 등을 빌려 사용하여 비용을 최소화 → 서버 사용 안 할 땐 리소.. 2023. 8. 23.
키-값 저장소 설계 가상 면접 사례로 배우는 대규모 시스템 설계 기초 - ch5,6 정리 아키텍처 설계는 결국 트레이드 오프이다. 선택에 따른 장단점이 존재하기 때문에 구현하고자 하는 서비스의 방향성에 따라서 각 도구들의 장점과 단점들을 타협하거나 선택하게 된다. 5,6 장은 키-값 저장소를 설계하기 위해 어떤 점들을 고려해서 트레이드오프를 해야 하는지에 대한 대안점들을 제시해 준다. 5장 안정 해시 설계 서버 장애가 났을 때 유연하게 서버를 증설하고 삭제하는 일을 대비해서 요청이나 데이터를 여러 서버에 균등하게 나누는 것이 중요하다. (수평적 규모 확장성) 안정해시는 서버에 데이터나 요청을 어떻게 균등하게 나누는지에 대한 해답을 제시한다. 일반적인 해시 알고리즘을 통해서 서버 인덱스를 할당하는 방법을 먼저 알아보면 해시 .. 2023. 2. 24.
스프링 빌드 시 Docker Container Image 생성 후 DockerHub push 자동화 하기 사이드 프로젝트를 진행하면서 아직 초기단계라 간단하게 백엔드 프로젝트를 docker hub에 배포하여 클라이언트가 간단하게 서버를 띄워서 API를 요청할 수 있게끔 하고있다. 스프링에서 제공하는 bootBuildImage 커맨드를 사용하여 이미지를 생성 후 docker hub에 푸시하고 있는데, 명령어를 굳이 두번 날리지 않아도 build.gradle에서 도커라이징 -> 도커허브에 배포 까지 자동으로 해주는 설정이 있다는 것을 알게되었다. tasks.named("bootBuildImage") { imageName.set("docker.example.com/library/${project.name}") publish = true docker { publishRegistry { username = "user.. 2023. 2. 21.
행위검증 vs 상태검증 (Mock vs Stub) 최근에 테스트 코드를 짜기 시작하면서, Mock 객체를 가지고 어디서부터 어디까지 활용을 해야 하는지, 그리고 왜 Mock객체를 사용하는지를 모르고 얼레벌레 코드를 짜다 보니 목적성을 잃은 의미없는 테스트케이스를 짜게 되었다. 단순히 예상한 값을 나오게 하려고 테스트코드를 짜는 데에만 집중을 한 것이다. 그치만 테스트케이스를 만드는 것도 설계가 필요하고 테스트에 대한 명확한 의도가 필요하다. 검색해보니 테스트 코드를 위한 모의 객체들은 테스트 더블이라는 집합 아래 여러가지 방법론들이 있었다. 이 중에서 대표적으로 구분되는 Mock과 Stub에 대해 핵심 내용만 간략하게 공부해보고 정리해보았다. 테스트 더블이란? 테스트 더블은 '스턴드 터블'이라는 용어에서 아이디어를 얻어서 만들었다. 말 그대로 액터가 해.. 2022. 7. 3.
[Docker] Docker&Container 기본 개념 도커로 간단하게 컨테이너를 실행시키고 프로젝트를 빌드해본 적은 있지만 도커가 무엇이고 컨테이너란 무엇인지 그리고 도커를 왜 사용해야 하는지에 대해서 제대로 공부해본 적은 없는 것 같다. 마침 Udemy에서 할인 이벤트를 진행하고 있길래 docker&kubernetes 강의를 결재했다. 언젠간 공부해야 하는데 책 보고 하긴 귀찮고 마침 강의도 싸니까 강의 보면서 삽고수가 떠맥여주는 강의 내용을 간단하게 정리해보고자 한다. 도커가 무엇인지에 대한 질문을 던지기 전에 컨테이너란 무엇인지를 짚고 넘어가보자. 컨테이너란? 표준화된 소프트웨어 유닛. 기본적으로 코드 패키지라고 볼 수 있으며 해당 코드를 실행하는데 필요한 종속성과 도구가 포함되어있어야 한다. 예를 들어서 Node.js 애플리케이션을 구축하는 경우를.. 2022. 6. 2.
[Docker] Docker로 jar파일 이미지 빌드하기 간단하게 spring boot jar파일을 도커 이미지로 생성하고 컨테이너를 실행해서 서버를 띄워보는 스터디 과정을 정리한 글입니다. docker 이미지를 생성하기 앞서 전체적인 순서를 정리해보았습니다. 1. 이미지를 빌드할 때 실행시킬 jar 파일을 준비합니다. 2. 이미지를 생성하기 위해 필요한 Dockerfile을 작성합니다. 3. 이미지를 빌드합니다. 4. 컨테이너를 실행시켜 spring boot 서버를 띄웁니다. jar파일 준비 인텔리제이 우측 상단에 Gradle탭 > Task > boot.jar를 실행해줍니다. 빌드가 성공하면 프로젝트 build > libs 경로에 jar파일이 생성됩니다. Dockerfile 작성 Dockerfile이란? Dockerfile은 사용자가 이미지를 생성할 때 사용.. 2022. 2. 19.
반응형