분류 전체보기 357

실전 프로젝트 - 27일차

오늘은 동시성 문제에 대해서 알아보자~ 동시성 문제 (Concurrency Issue) 동시성 문제란 두 개 이상의 세션이 공통된 자원에 대해서, 모두 읽고 쓰는 작업을 하려고 하는 경우에 발생할 수 있는 문제를 말한다. 더보기 동시성(Concurrency) 이란? 하나의 CPU코어에서 시간분할(Time sharing)을 통하여 여러 일을 처리하는 것처럼 보여지게하는 기법 하지만, 일반적으로 여러 요청이 동시에 동일한 자원에 접근하여 수정하려는 것을 의미 그렇다면 왜 동시성 문제가 일어나는가? 여러 요청들이 한 자원을 공유할 때, 분산된 DB의 동기화가 여러 요청의 동시화 속도를 못 따라가는 상황이 발생 이에 따라 데이터 정합성을 깨지고, 데이터 동시성 문제가 발생 예를 들면, 한정된 수량에 대해서 한 ..

실전 프로젝트 - 25일차

Spring Batch 에러 잡아보기 코드 다 지우고 처음부터 다시 시작해보기 Case_1 : jpa 활용 방식? BookEntityManagerFactoryConfiguration 생성 @Configuration @EnableTransactionManagement @EnableJpaRepositories(entityManagerFactoryRef = "BookEntityManagerFactory", basePackages = {"study.godokprac.book.repository"}) class BookEntityManagerFactoryConfiguration { @Autowired @Qualifier("BookDataSource") private DataSource BookDataSource;..

실전 프로젝트 - 24일차

Spring Batch 구현 계속 에러난다 계속 계속 계속... 어디서 문제인지 감이 안온다... 에러 코드는 다음과 같은데.. 명확하게 원인도 나오는 것 같다. testbook 이라는 테이블을 매핑할 수 없다고 나오는거 같은데,, 해당 쿼리문이 들어가는 StepScope 부분인데,, DB Console에서 실행해보면 정상적으로 작동이 되고 알맞은 값이 나오는데 왜 문제인지 모르겠다.. batch하기 싫다.. 비취.. 내일도 에러를 잡고 끙끙 앓을 예정이다

23.03.27 - 04.02 -WIL

실전 프로젝트 3주차가 마무리 됐다. 잘못된 느낌일수도 있는데, 모두들 많이 지쳐가는것 같다.. 사실 내가 지친다..ㅋㅋㅋㅋㅋㅋ 다시 하라고 하면 절대로 못할 것 같다. 99일간 평균 15시간 이상 앉아있는 것도 어려운데, 쌩판 모르는 걸 시작하고 공부하고 적용하고.. 지금까지는 어찌어찌 해왔던것 같은데.. 지금은 진짜 방향성이 안잡혀서 길을 잃은 기분이다.. 이게 맞는건가~ 아닌가~ 잘하고 있나~ 아닌가~ㅋㅋㅋㅋㅋㅋ 그래도 어제 멘토님께서 방향성을 잡아주시고 조언해주시면서 어느정도의 방향성을 팀원들과 잡긴했다. 열심히 해야겠지?! 팀원들과 이제는 각자의 역할을 나눠서 공부하고 적용해서 팀원들에게 공유하기로했다! 내가 맡은 부분은 Spring Batch~ 새로운 개념이 또 나에게 찾아왔다~~~ㅋㅋㅋㅋㅋㅋ..

실전 프로젝트 - 22일차

Spring batch batch = 일괄처리 라는 뜻을 지니고 있음 집계기능을 가지고 있고 이것은 하루에 한 번 수행된다. 단발성으로 대용량 데이터를 처리하는 어플리케이션을 배치 어플리케이션이라고 한다 Spring 진영에서는 Spring Batch가 존재한다. 배치 어플리케이션은 만족해야하는 조건이 있다. 대용량 데이터 - 대량의 데이터를 가져오거나, 전달, 계산 등의 처리를 할 수 있어야한다. 자동화 - 심각한 문제 해결을 제외하고는 사용자 개입 없이 실행되어야 한다. 견고성 - 잘못된 데이터를 충돌/중단 없이 처리할 수 있어야 한다. 신뢰성 - 무엇이 잘못되었는지를 추적할 수 있어야 한다. (로깅, 알림) 성능 - 지정한 시간 안에 처리를 완료하거나 동시에 실행되는 다른 어플리케이션을 방해하지 않도..

실전 프로젝트 - 21일차

Meta Annotation (@Target, @Retention) 로깅과 AOP를 설정할 때 주로 사용되는 @Target과 @Retention에 대해 알아보자! Meta - Annotation이란? 다른 Annotation에서도 사용되는 Annotation의 경우를 말하고 custon - annotation을 생성할 때 주로 사용한다. @Service 어노테이션은 Bean으로 등록해주기 위해 @Component를 가지고 있는 형태로써, 여기서는 @Component를 Meta - Annotation이다. @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.PARAMETER) public @interface ParamToDto { } 이렇게 사용이 된다. @..

실전 프로젝트 - 20일차

멀티 프로세스와 멀티 스레드 멀티 프로세스 멀티 프로세스는 하나의 프로그램을 여러 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하는 환경이다. 프로세스는 하나의 운영체제로부터 CPU시간, 주소공간, 독립된 메모리 영역(code, data, stack, heap)을 할당 받는다. 각 프로세스는 독립된 주소 공간에서 실행되어 다른 프로세스의 주소 공간에 접근할 수 없다. (독립적) 각 프로세스 간 IPC(Inter-Process-Communucation)를 사용해 데이터를 주고 받는다. 하나의 프로세스가 잘못 되어도 프로그램은 동작한다. 브라우저 중 크롬 브라우저가 멀티 프로세스로 동작한다. 장점 독립된 구조이기에 안정성이 높다 한 프로세스가 죽어도 다른 프로세스가 영향을 받지 않는다. 대신 느려질 ..

실전 프로젝트 - 18일차

오늘의 문제는 데이터 검색 시 공백 (띄어쓰기 2칸) 입력 방지와 keyword가 없으면 검색이 불가능하게 해야했던 것! 오래간만에, 프로젝트 초기의 느낌으로 돌아가 HTML을 만져야했다. 공백 검색의 이유는 공백 검색 시 에러가 발생하는 이유 때문에 공백 검색을 막아줘야했다. 코드 수정으로 바로 들어가보자. 기존 input 코드에서 style 뒤에 onkeyup과 onchange을 입력해준다. js를 사용해 function 을 생성해준다. function noSpaceForm(obj) { let str_space = /\s{2}/; // 공백 2칸 체크 if (str_space.exec(obj.value)) { alert("공백을 사용할 수 없습니다."); obj.focus(); obj.value = ..

실전 프로젝트 - 17일차

커버링 인덱스(Covering index) & 복합 인덱스 Prac Test_1 복합인덱스는 카디널리티가 낮은 순으로 인덱스 생성 커버링 인덱스 적용 X select * from book where title = '가나' group by category, babyCategory, title; 3회 test 평균 = 1m 24s... Test_2 복합인덱스는 카디널리티가 낮은 순으로 인덱스 생성 커버링 인덱스 적용 O select category, babyCategory, title from book where title = '가나' group by category, babyCategory, title; 3회 test 평균 = 24s... Test_1에 비해 검색 성능 약 3.3배 향상 Test_3 복합인..

23.03.20 - 03.26 -WIL

1. 검색하는 필터가 다양한데 엘라스틱서치 도입 전에 인덱스를 어떻게 활용해서 검색을 할 수 있을지? 답변 : 단순 검색은 full-text, 필터는 복합 인덱스? 여전히 고민중이다. 피드백 : 복합 인덱스는 여러 개여야 한다. 어떤 순서로 나열할 지는 데이터의 카디널리티를 잘 고려해서 어떤 인덱스를 왜 만들었는지 고민하는게 필요하다. 인덱스의 동작하는 방식을 이해하는 것이 중요하다! 그 후에 엘라스틱 서치로 넘어가는 것이 좋다고 생각한다. 추가적으로 테스트 기록할 때 JMeter를 이용하면 다양하고 좋은 테스트 결과를 얻을 수 있다. 2. 동시성 이슈에 대한 테스트는 어떻게 진행해볼 수 잇을지? 답변 : 앞 조랑 비슷. 3. 책 랭킹에 대한 프로세스는 어떻게 진행될지? 답변 : 레디스, RDS, 배치 ..

728x90