ssung_항해일지/항해99_실전 프로젝트 24

실전 프로젝트 회고

6주간의 실전 프로젝트 끝났다!! 아쉬운 점은 프로젝트 중반까지 팀원들과 같이 이것저것 테스트 해보면서 잘 따라가고 있었는데 협업을 해야하고 각자의 역할을 맡아 진행할 때부터 속도가 많이 뒤쳐지고 필요한 프로그램 셋팅에도 어려움을 많이 겪었다. 원래 진행하고 있던 부분이 아닌 다른 팀원이 진행하고 있던 부분에 같이 합류해서 진행해야했기 때문이다. 그렇게 역할이 결정되고 진행되었을 때, 스스로 서비스 로직이나 코드를 더 자세하게 파악하고 진행했어야 하는데, 다급한 마음에 제대로 이해가 되지도 않은 상태에서 기능 구현에만 힘쓰려고 하다보니 제대로 된 역할을 하면서 프로젝트를 진행하지 못했던 아쉬움이 크다. 팀원들에게 상황을 전달했을 때, 누구하나 뭐라하는 사람이 없이 다 이해해주었고 괜찮다고 해주셨다. 정말..

실전 프로젝트 - 40일차

직렬화(Serialize)란? 직렬화의 정의 어떤 환경의 데이터 구조를 다른 환경에 전송/저장하기 위해 바이트(Byte) 포맷으로 변환하는 과정 반대의 개념인 역직렬화는 바이트 포맷으로부터 데이터 구조를 추출하는 것 네트워크 통신으로 받은 데이터를 메모리에 쓸 수 있도록 다시 변환하는 것 자바에서 객체를 전송 가능한 형태로 만드는 것 직렬화가 필요한 이유 기기마다 서로 다른 가상 메모리 주소 공간을 갖기 때문에 참조형 타입의 데이터들은 전달할 수 없다. 따라서 주소값이 아닌 Byte형태(기본형 타입)로 직렬화한 데이터로 전달해야 파싱이 가능한 데이터가 된다. 즉, 우리가 만국 공통어인 영어를 사용하듯 각자 모두가 알아들을 수 있는 형태로 변환해주는 과정이다! 그리고 직렬화를 하면 VM의 메모리에서 상주하..

실전 프로젝트 - 35일차

실전 프로젝트 발표 자료 만드는중.. PPT 작성하고, 팀 노션 작성하고, 브로셔 작성중... 내 부족한 부분을 팀원들이 채우고 있으니까! 이거 하면서 팀을 돕고 일해야지 그치?ㅋㅋ 팀 로고도 만들어보는 중인데 희한한걸 다 해보는구나 ㅋㅋㅋㅋㅋㅋ 눈아프다 눈아파... 그나저나.. 컴터야 제발.. 울지마라.. 나도 참고있는데 너가 울면 내가 어떡하니.. 조금만 버텨주라 제발 사양은 좋은데 왜 일을 못하니.. 멈추지마라..

실전 프로젝트 - 34일차

간만에 쓰는 TIL.. 적지 않았다. 이유가 있었겠지.. 오늘은 가비지 컬렉터를 알아가보자 가비지 컬렉션, 컬렉터란? Garbage Collection, 줄여서 GC라고도 한다. 메모리 관리 방법 중에 하나로, 시스템에서 더 이상 사용하지 않는 동적 할당된 메모리 블럭을 찾아 자동으로 다시 사용 가능한 자원으로 회수하는 것으로 시스템에서 가비지컬렉션을 수행하는 부분을 가비지 컬렉터라 부른다. 예를 들어 C언어는 프로그래머가 메모리를 할당한 뒤 수동으로 해제까지 직접 해줘야 한다. 그래서 사용자가 메모리를 할당해놓고 필요 없어진 뒤에도 해제를 안하는 일이 생겨 메모리 누수가 있거나, 반대로 해제했던 메모리를 다시 사용하는 실수 때문에 버그가 나오기도 한다. 이러한 문제를 해결하기 위해 제시된 방법이 가비지..

실전 프로젝트 - 28일차

동시성 문제를 해결하는 다양한 방법 Java 사용하는 방법 Synchronized를 활용한 방법 @Service @RequiredArgsConstructor public class StockService { private final StockRepository stockRepository; public synchronized void decrease(Long id, Long quantity) { Stock stock = stockRepository.findById(id).orElseThrow(); stock.decrease(quantity); stockRepository.saveAndFlush(stock); } 자바에서 지원하는, synchronized를 사용하면 접근하고 있는 메서드에 하나의 스레드만 ..

실전 프로젝트 - 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하기 싫다.. 비취.. 내일도 에러를 잡고 끙끙 앓을 예정이다

실전 프로젝트 - 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 { } 이렇게 사용이 된다. @..

728x90