스프링 배치 장애 방어 전략
해당 글은 수강 후기 공유 시스템의 학과 데이터 주입, 갱신 배치를 개발하며 고민한 과정을 기점으로 서술합니다. 왜 방어 전략이 필요한가? 대용량 데이터를 처리하는 배치 시스템에서 가장 큰 고민은 "하나의 실패가 전체를 망치는 상황" 입니다.
해당 글은 수강 후기 공유 시스템의 학과 데이터 주입, 갱신 배치를 개발하며 고민한 과정을 기점으로 서술합니다. 왜 방어 전략이 필요한가? 대용량 데이터를 처리하는 배치 시스템에서 가장 큰 고민은 "하나의 실패가 전체를 망치는 상황" 입니다.
부산 지역 공유대학 학생 약 600명을 위한 수강 후기 플랫폼을 개발하며, 저희 팀은 중요한 기로에 섰습니다. "과연 이 규모의 서비스에 복잡한 분산 서버 구조가 정말 필요할까?"라는 근본적인 질문이었습니다.
메이븐이란? 메이븐은 빌드 관리 도구로써 JVM, WAS가 프로젝트를 인식하고 실행할 수 있게 작성한 소스코드, 프로젝트에 사용되는 파일들(xml, jar, properties)을 빌드하는 도구이다.
애플리케이션 서버가 클라이언트에게 요청을 받으면 어떤일이 일어나는지 궁금했다. 그러던중 스프링 프레임워크에는 내장 톰캣이 웹서버의 역할을 하는데, 톰캣이 요청을 처리하는 과정에 대해서 학습하게 되었다.
배경 : 나의 스스로를 메타인지하는 과정을 거치며, 정체되어있는 것 같은 나 자신에게 한번 써보는 시간을 가지려 한다. 나 스스로의 지속적인 성장을 위해 작성해보겠다. 1개월 전에 비해 나는 3점만큼 성장했다. (1~5점) e.g.
이번 글에서는 신규 서비스인 '수강후기 공유 시스템' 런칭을 위해 교내 학생 및 강의 데이터를 데이터베이스에 주입하는 Spring Batch 프로젝트를 어떻게 설계하고 개발했는지에 대한 과정을 공유하고자 합니다.
Spring Boot 기반의 API와 Spring Batch 프로젝트를 독립적으로 운영하는 환경에서 겪었던 도메인(Entity) 클래스 불일치 문제와 이를 멀티 모듈 구조를 통해 해결한 경험을 공유합니다.
젠킨스를 통해서 스프링 도커이미지를 배포자동화를 만들어보았다. 매번 도커를 빌드하고 도커hub에 push후 ssh로 ec2 서버에 접속하여 도커를 pull, run 하는 과정이 번거로웠다. 젠킨스가 깃허브에 코드가 커밋되면 clone하여 gradle build를 진행...
최근에 켄트백님의 Test Development by Example 을 읽으며 테스트 주도(Test-Driven) 개발에 대해서 책을 따라가며 감을 익혀보았다. 하지만, 실제 프로젝트에 바로 적용하기에는 선뜻 책을 1번밖에 안읽어서인지 바로 어떻게 해야겠다고...
구글 드라이브 설계 1단계 문제 이해 및 설계 범위 확정 가장 중요하게 지원해야할 기능 -> 파일 업로드 / 다운로드, 파일 동기화, 알림 모바일 앱, 웹 앱 가운데 하나만 지원해야 하는지? 파일을 암호화해야 하는지? 파일 크기에 제한은? 일간 능동 사용자는? 제안된...
유튜브 설계 월간 능동 사용자 수 : 2십 억 매일 재생되는 비디오 수 : 5십 억 미국 성인 가운데 73%가 유튜브 이용 5천만명의 창작자 유튜브의 광고 수입은 2019년 기준으로 150억 달러이며 이는 2018년도 대비 36%가 증가 모바일 인터넷 트래픽 가운데...
검색어 자동완성 시스템 가장 많이 이용된 검색어 k개를 자동완성하여 출력하는 시스템을 설계 해보자. 1단계 문제 이해 및 설계 범위 확정 면접관 과의 대화에서 요구사항을 분명히 할 것들 사용자가 입력하는 단어의 자동완성될 검색어의 첫 부분? 중간 부분? 몇 개의 자동...
채팅 시스템 설계 채팅 앱이라고 했을 때 사람들이 서로 떠올리는 것은 제각각일 수 있다. 면접관이 일대일 채팅이라고 생각하는데 그룹 채팅 앱을 설계해버리면 곤란할 수 있다. 1단계 문제 이해 및 설계 범위 확정 응답지연이 낮은 일대일 채팅 기능 최대 100명까지...
뉴스 피드 시스템 설계 뉴스 피드(news feed) : 페이스북 홈 페이지 중앙에 지속적으로 업데이트되는 스토리, 사용자 상태 정보 업데이트, 사진, 비디오, 링크, 앱활동, 팔로우 사람들, 그룹 좋아요 등등..
알림 시스템 설계 모바일 푸시 알림 SMS 메시지 이메일 1단계 문제 이해 및 설계 범위 확정 지원해야 하는 알림 종류 실시간 시스템인지 어떤 종류의 단말을 지원해야 하는지 사용자에게 알림을 보낼 대상 (클라이언트인지, 서버측인지) 알림을 받지 않도록 설정 하루에...
웹 크롤러 설계 웹 크롤러: 로봇(robot), 스파이더(spider) 라고도 함 웹 페이지, 이미지, 비디오, PDF 파일 몇 개 웹 페이지에서 시작하여 그 링크를 따라 나가면서 새로운 콘텐츠를 수집 이용되는 곳 검색 엔진 인덱싱 - 검색 엔진을 위한 로컬...
URL 단축키 설계 1단계 문제 이해 및 설계 범위 확정 시스템의 기본적 기능 URL 단축 : 주어진 긴 URL을 훨씬 짧게 줄인다. URL 리디렉션(redirection) : 축약된 URL로 HTTP 요청이 오면 원래 URL로 안내 높은 가용성과 규모 확장성,...
분산 시스템을 위한 유일 ID 생성기 설계 분산 시스템에서 유일성이 보장되는 ID를 만드는 방법 1단계 문제 이해 및 설계 범위 확정 ID는 유일해야 한다. ID는 숫자로만 구성되어야 한다. ID는 64비트로 표현될 수 있는 값이어야 한다.
키-값 저장소 설계 키-값 저장소(key-value store) : 비 관계형 데이터 베이스이다. put : 키-값 쌍을 저장소에 저장 get : 인자 키에 해당하는 값을 꺼냄 문제 이해 및 설계 범위 확정 완벽한 설계란 없다.
5장 안정 해시 설계 해시 키 재배치(rehash) 문제 N개의 캐시 서버가 있다고 할 때, 이 서버들에 부하를 균등하게 나누는 보편적인 방법은 아래와 같은 해시함수를 사용하는 것이다. 4대의 서버를 사용한다고 할 때, 각각의 키에 대해서 해시 값과 서버 인덱스를...
4장 처리율 제한 장치의 설계 처리율 제한 장치 : 클라이언트 또는 서비스가 보내는 트래픽의 처리율(rate)을 제어하기 위한 장치 API 처리율 제한 장치를 두면 좋은 점 DoS (Denial of Service) 공격 방지 비용 절감 서버 과부하를 막는다.
3장 시스템 설계 면접 공략법 시스템 설계 면접이 있는 이유 모호한 문제를 훌기 위해 협력하여 그 해결책을 찾아내는 과정에 대한 시뮬레이션 면접을 통해 보여줘야 할 것 설계 능력의 기술적 측면 협력에 적합한 사람 압박이 심한 상황도 잘 헤쳐나가는 자질 모호한 문제를...
2장 개략적인 규모 추정 보편적으로 사용되는 성능 수치 항목들을 추정해서 계산하는 것 필요한 기본기로 2의 제곱수나 응답지연(latency) 값과 가용성에 관계된 수치들의 이해가 있어야 한다.
1장 사용자 수에 따른 규모 확장성 한 명의 사용자를 지원하는 시스템에서 시작하여, 몇백만 사용자를 지원하는 시스템을 설계한다. 규모 확장성과 관계된 설계 문제를 푸는 데 쓰일 유용한 지식들을 설명한다. 단일 서버 사용자는 도메인 이름을 이용하여 웹사이트에 접속한다.
최근 교내 수강후기 공유 시스템의 수강후기 작성의 욕설 검증과정을 위해 OpenAI API와 통신하는 기능을 개발하고 배포하는 과정에서 겪었던 특이한 트러블 슈팅 경험을 공유하고자 합니다. 로컬 환경에서는 아무 문제가 없었지만, 특정 지역에 배포했을 때만 발생했던,...
타입과 추상화 p74 해리 벡의 지하철 노선도 추상화 - 지하철을 이용하는 분들의 목적은 하나의 역에서 다른 역으로 이동하는 것, 어떤 역에서 출발해야 하는지와 어떤 역에서 환승해야 하는지, 그리고 어떤 역을 거쳐야만 가장 쉽고 빠르게 목적지에 도착할 수...
ch02를 읽으며 기록한 문장들 이상한 나라의 객체 p47 객체를 상태(state), 행동(behavior), 식별자(identity)를 지닌 실체로 보는 것이 가장 효과적이다. 객체란 식별 가능한 개체 또는 사물이다.
ch01을 읽으며 기록한 문장들 p31 협력 속에 사는 객체 객체는 전지전능한 역할이 되어서는 안됨 -> 다른 객체의 요청에 응답 자기 스스로의 원칙에 따라 어떤 일을 하거나 자기 스스로를 통제하여 절제하는 것 -> 자율적인 객체 캐시어는...
꿈에도 생각못한 전국 해커톤 대회에 참가하게 되었다. 서류합격이 될줄 기대도 하지 않았다. 이전 해커톤에 함께 참가하였던 친구들과 이번엔 부산 대표로 전국 팔도의 지역 대표 팀들과 함께 해커톤에 참여하게된 것이다. 대회 장소는 강원도 춘천 봄내체육관이다.
부산 범내골에 있는 부산상공회의소에서 ICT 공동해커톤이라는 대회에 학교 대표로 참가하게 되었다. 부산에서 대표하는 각 대학교별에서 대표팀들이 출전한다. 팀원들은 학부연구실에서 만나 같이 활동하는 친구들이다.
p446 아이들의 영재성을 부추기는 프로그램은 별로 좋지 않다. 이유는 어린 시절엔 다른 또래 친구들보다 특정 분야를 잘할 순 있다. 성인이 되어서까지 그 '잘함'이 유지되는 건 흔치 않다. 즉 어릴 땐 영재일 순 있지만, 그 친구가 커서도 영재일 거라는 보장은 없다.