- Today
- Total
목록잡동사니 (8)
개발하는 고라니
specification] MySql - 8.0.28 gradle - 7.4 flyway - 8.0.0 서론 개발을 하다보면, Database에 생성해놓은 테이블의 컬럼명이 수정된다던지, 컬럼의 타입이 변경되거나, 컬럼이 추가/삭제되는 일이 빈번하진 않지만 일어난다. 하지만 시간이 지나고, 우리가 이런 수정이 언제? 왜 생겼지?는 왠만해서 알 수 없다. 우리의 코드 또한 이러한 이유를 포함하여 VCS(Version Control System, ex.git) 을 사용하는 것이 아닌가. Database의 변경이력을 파일로써 관리해보도록 하자. 본론 본 글에서는 Flyway라는 '오픈소스 데이터 마이그레이션' 툴을 사용한다. 사용하는 방법은 여러가지가 있지만. build.gradle.kts에 작성해서 사용해보..
들어가며 최근 새로운 프로젝트를 시작하였는데, 이 도메인은 기존 팀에서 진행하던 도메인과 별개의 도메인으로 판단되어, 새 코드 레포지토리가 필요했다. 마침 최범균님의 '도메인 주도 개발 시작하기' 책으로 스터디를 했고, 기존에 MVC 패턴으로만 개발하면서 느낀점들을 경험하고 싶지 않아 다른 아키텍쳐를 도입하고자 하였다. 사실 DDD를 공부하기 전, 'Clean Architecture' 스터디를 먼저 했었다. 정말 어렵다. 초보자가 단숨에 하기에 벅찬 내용이고, 이걸 도입했다가는 아키텍쳐에 매몰되어 개발에 차질이 있을 것 같았다. 그래서 클린 아키텍쳐는 좀 더 성장해서 써보기로 했다. 그래서 고른 것이 DDD 이다. MVC 에서 아키텍쳐를 변경하게된 이유 1. 유지보수가 힘들다. 가장 큰 이유이다. MVC..
이번 한 주는 특별히 다른 점은 없었으나, 유난히 시간이 빨리가버린 그리고 정신없이 흘러간 한 주가 아니었나 싶다. 아마도 제목과 같이 서비스 장애를 겪었고, 갖은 문제가 발생했기 때문이라 생각한다. 사실 어디부터가 장애고, 어디까지가 장애라고 해야하는지 모르겠지만. 이미 배포 중인 서비스가 예기치 못한 이슈를 겪으면 장애라고 생각한다. 그리고 내가 겪은 현상은 확실히 서비스 장애이다 :). 우선, 물품 별 배송정보를 토대로 상태를 업데이트 하며 고객에게 톡이 전송되는 프로세스가 있는데, 기존에는 메뉴얼로 작업되고 있었다. 이를 최근 자동화 로직을 설계하고, 나름대로 검증 후 배포를 내보냈다. 3주 정도는 문제없이 동작하는 줄 알았는데, 금주 일부 고객의 문의가 들어왔다. 30분 마다 동일한 톡이 반복적..
21년 10월 말, 27살의 마무리를 준비할 쯤 첫 취준 기간이 끝났다. 전자공학을 전공했고, 1학년 때 C 언어의 벽을 느끼며 코딩은 못하겠다라고 생각했었고, 이후로도 못했다. 어영부영 지내다 군복무를 하고 돌아와서 공부를 열심히 해봐야겠다고 다짐하고 학교 공부에만 매진했다. 그거면 되는 줄 알았으나, 절대 그렇지 않았다. 모든 것을 새로 공부해야했고, 어디서부터 어떻게 시작해야할지 막막했다. 이를 느꼈을 때가 대학교 4학년 1학기였다. 당시는 개발이 뭔지도 몰랐고, 할 줄 아는 것은 자바,,,C,,,자료구조 정도였다. 개발이 하고 싶어서 유튜브와 책을 뒤지며 내가 무엇을 해야하는지 찾아다녔고, 뉴렉쳐라는 유튜브를 접하게 되었다. 이때 굉장히 도움이 많이 되었다. 나름 공부를 하고 지냈고, 막학기에는 ..
저번 달부터 프로그래머스에서 진행한 월코챌 시즌3. 총 8문제중 4문제 이상 풀면 이벤트에 응모할 수 있었다. 가까스로 4문제를 풀고 늘 그렇듯 별 기대없이 이벤트에 응모했다. 며칠뒤 뜻밖의 이메일이 한통 날아왔다. 평소 프로그래머스의 굿즈가 탐났었고 굿즈를 희망했는데 해피해킹2 ?? 처음 듣는 거였다. 그래서 당첨이 됬음에도 아쉬운 마음이 있었으나, 찾아보니 키보드였고, 그 중에서도 무접점 키보드였던 것이다. 근데 가격이 너무나도 사악했다. 이런 키보드를 내가 당첨되다니 나에게 과분한 키보드라고 생각했다. 그래도 기대되는 마음은 감출 수 없었다. 태어나서 처음으로 무언가에 당첨되었다는 사실에 그렇게 오늘 키보드를 받았는데 해피해킹 프로2와 달리 해피해킹 하이브리드 타입-s 라는 모델을 받았다. 이 제품..
21-02-18 ~ 21-07-13 불과 4일전, 7월 13일부로 올해 2월 18일부터 진행된 뉴렉쌤의 국비교육과정의 마침표를 찍었다. 국비교육과정은 사실 제대로 운영되기 힘든 것 같다. 길어야 6개월의 과정에 웹 개발의 상당부분을 배우고, 평가하고 프로젝트를 해야하니 가르치는 입장에서도, 배우는 입장에서도 서로 힘이 빠지는 일이 생긴다. 6개월도 짧은 기간인데, 이번 교육 과정은 5개월이었다. 1달 차이가 뭐 얼마나 크겠냐만은, 실제로는 엄청난 차이라고 생각된다. 예를 들어 스프링 시큐리티를 배울 때 깊게 파고들어 배우는 거랑, 동작만 가능하게 해놓는 데까지 배우는거랑 천지차이라고 생각된다. 1달이라는 시간이 더 있었다면 조금더 깊이있는 공부를 할 수 있었을 텐데 그 점이 매우 아쉽게 느껴진다. 그렇다..
B는 C를 사용하므로 C는 B의 부품 A는 B를 사용하므로 B는 A의 부품 Frame은 A를 사용하므로 Frame의 부품 즉, Dependency는 상대적이다. 왼쪽, 중앙 방법은 부픔(A)를 뺏다 꼇다 할 수 있는 방법이 아니므로 DI가 아니다. 오른쪽은 Setter, Constructor 로 Injection를 하는 방법이다. 스프링이 DI를 해준다. 직접 관리하는 것보다 속도는 느릴 수 있으나 변경이 유연하다 IoC Container Dependency Injection의 방법 생성자 Injection @Service public class NoticeServiceImpl implements NoticeService{ private final NoticeRepository repository; //..
# 1 1부터 9까지의 숫자 개수를 가질 수 있는 2차원 배열(String[][] eachNumber)과 전체 숫자의 합을 가질 수 있는 int(int sum)를 가진 class Numbers가 있다. 사용자로부터 일의 자리 10개의 숫자(정수)를 입력받아 이를 Number클래스의 2차원 배열과 그 합을 구해 출력하시오. * 입력된 숫자가 10개를 초과하면 10개까지만 짤라서, 10개가 안되면 입력했던 숫자를 다시 보여주고 이어서 다시 입력받게끔 구현 * 숫자가 아닌 값을 입력받으면 잘못된 값을 빼서 입력받은 숫자만 다시 보여주고 이어서 다시 입력받게끔 구현 입력 예 : 1234567890 출력 예 : 배열출력 ----- 1 : 1 2 : 1 3 : 1 4 : 1 5 : 1 6 : 1 7 : 1 8 : ..