개-발

모놀로식 아키텍처 (Monolithic Architecture)하나의 WAS에서 모든 기능을 처리하도록 구성한다.장점구조가 간단하다시스템 운영과 개발이 편리하다네트워크로 인한 지연 및 데이터 유실 안전하다디버깅이 쉽다 ( 로그 추적에 용이하다 )트랜잭션 관리가 편하다장애에 견고하다단점기능이 많아지면 복잡해질 수 있다 (스파게티 코드)코드베이스가 어지럽다 ( HTML, JS, CSS 파일을 포함해야 하므로 )클라이언트 코드에 버그를 수정하더라도 서버를 다시 실해야하 하는 불편함이 있다Git 브랜치도 많아지고 관리가 어렵다애플리케이션에 대한 확장이 비효율적이다점차 늘어나는 사용자의 요청을 감당하기 위해 시스템을 확장하여 고가용성을 확보해야 한다.소스코드가 증가함에 따라 서버의 빌드시간은 점차 늘어나게 되고,..
problemec2에 올릴 수 있었지만 ec2 메모리가 부족해서 이렇게 된거 ElastiCache 를 사용해보려고 한다.solutionElastiCache 란Amazon ElastiCache는 인 메모리 데이터베이스 캐싱 시스템을 제공하여 애플리케이션이 데이터를 검색 할 수있는 성능, 속도 및 중복성을 향상시키는 클라우드 캐싱 서비스이다.https://ap-northeast-2.console.aws.amazon.com/elasticache/home https://ap-northeast-2.console.aws.amazon.com/elasticache/home?region=ap-northeast-2#/ ap-northeast-2.console.aws.amazon.com1. Start위 링크에 접속해서 오른..
problem프로필 , 로고 업로드 기능을 위해 서버에서 이미지 처리 기능으로 S3를 사용 했다.S3 의 버켓에 특정 확장자 업로드를 방지하는 정책을 적용 해보기로 했다.solution적용 할 버킷에 접속한다.권한 탭으로 이동 후 아래에 내려오면 버킷 정책이 있다{ "Version": "2012-10-17", "Id": "Policy1717078661759", "Statement": [ { "Sid": "Stmt1717078657627", "Effect": "Deny", "Principal": "*", "Action": [ "s3:GetObject", ..
problem"action_request_validation_exception""Validation Failed: 1: type is missing;"두 예외에 대한 설명도 아래에 담는다폐쇄망(내부망)에서 엘라스틱서치 인덱스의 데이터를 옮기려고 한다해당 인덱스의 데이터를 json 파일로 받아 다시 새로운 인덱스로 옮기는 작업을 했다.solution1. 데이터 -> JSON 파일 추출# 1. 첫 번째 요청으로 스크롤 ID 얻기curl -X GET "http://localhost:9200/index/_search?scroll=1m&size=1000" -H 'Content-Type: application/json' -d'{ "query": { "match_all": {} }}' > my_index.j..
· 개-발/Git
Issue Labelsproblem기본 이슈 레이블은 상당히 제한적이다.그래서 커스텀 해보기로 했다.Github Label 설치 github label을 동기화할 수 있는 라이브러리가 있다. GitHub Label Sync# node.js npm 설치sudo apt install nodejs npm# github-label-sync 설치npm install -g github-label-sync AccessToken 준비레파지토리에 label을 적용하려면 깃헙 access-token이 있어야 한다.이전에 git credential 정책이 바뀌면서 만들어둔 토큰이 있어서 사용했다.access Token 만드는 방법labels.json 만들기새롭게 적용할 label 들을 labels.json 파일로 만들어 주..
설정버전이 굉장히 중요하다.elasticsearch 버전 별로 deprecated 되는 주요 기능이 있다.ElasticSearch 8.xSpringBoot 3.0.xSpring data ElsticSearch 8.5.3//build.gadle.ktsimplementation("org.springframework.boot:spring-boot-starter-data-elasticsearch")implementation("com.fasterxml.jackson.core:jackson-databind:2.17.0")ConnectorApi key를 사용해도 되고 계정을 추가하고 권한을 넣어 사용해도 된다.키바나에 아래 내용을 입력하면 api-key 가 생성된다.POST /_security/api_key{ "n..
JDK Dynamic Proxy 와 CGLib Dynamic Proxy와 CGLib은 모두 런타임 위빙 방식이며 프록시 패턴으로 동작한다. 따라서 메서드 실행 시에만 위빙이 가능하다. 그래서 Dynamic Proxy와 CGLib를 사용하는 스프링 AOP도 메서드 실행 조인포인트만 지원한다.위빙 이란 ?위빙(Weaving)은 AOP(Aspect-Oriented Programming)에서 사용되는 중요한 개념으로, 어드바이스(Advice)와 타겟 객체 사이에 관점 지향 기능을 적용하는 프로세스를 의미합니다. 클래스 로딩 시점이나 프록시 객체 생성 시점에, AOP 프레임워크가 바이트코드를 수정하여 어드바이스를 적용하는 방식입니다. 이 방식은 JDK Dynamic Proxy나 CGLIB Dynamic ..
트랜잭션하나의 작업단위로 묶어 실행 시킨다. 트랜잭션은모든 작업을 완료 (commit) / 모든 작업을 무효화 (rollBack)단 두가지만 가능해야 한다.원칙트랜잭션에는 4가지 원칙이 있다.원자성 (Atomicity)트랜잭션은 원자적인 단위로 간주된다.트랜잭션에 속한 모든 연산은 전체가 성공하거나 전체가 실패하는 것만 보장한다.트랜잭션이 동작 중 어떤 연산이 실패하면 모든 상태가 이전으로 돌아간다(rollback). 일관성 (Consistency)트랜잭션의 실행 전후에 데이터베이스는 일관된 상태여야 한다. 은행 A 계좌에서 돈을 인출 한다 B 계좌로 돈이 입금 된다  쇼핑몰 고객이 A상품을 구매한다A상품은 재고가 차감 된다   고립성 (Isolation)여러 트랜잭션이 동..
imSoo
'개-발' 카테고리의 글 목록