전체 글
-
Custom GitHub Action 으로 Chat-GPT 코드리뷰 제작하기ETC 2023. 6. 22. 20:16
github에 pull request를 날리면 chat gpt 가 코드리뷰를 해주는 custom github action 을 만들려 한다. 만드는 방법은 아래의 링크를 참고할 수 있다. https://docs.github.com/en/actions/creating-actions/creating-a-javascript-action file.filename); let fileDiff = "" for (const file of changes) { const diff = await client.request(`GET /repos/${owner}/${repo}/commits/${sha}`, { headers: { Accept: "application/vnd.github.diff", }, }); fileDiff +..
-
FlyWay로 DB 형상 관리DB 2023. 6. 15. 12:13
개발을 하다보니 DB 를 마이그레이션 하는경우가 게속해서 발생되고 테스트 db 에는 마이그레이션을 했으니 운영 db에는 마이그레이션을 안해서 장애가 발생하는 경우 등 다양한 휴먼 에러가 많이 나타난다. FlyWay를 사용하여 이를 관리하려고한다. Flyway Flyway는 데이터베이스의 형상을 관리하기위한 도구로 데이터베이스의 스키마 및 데이터의 변경사항을 관리하고 일관성 있게 유지하도록 지원한다. Flyway는 여러 마이그레이션 이력을 가지고 동작을 하면서 각 버전 과 실행 여부를 관리하며 순차적으로 마이그레이션을 진행하여 최신상태를 유지한다. 현재 개발도구로 SpringBoot + JPA 를 사용하기에 여기에 Flyway를 추가한다. flyway 추가 및 활성 의존성 추가 //flyway implem..
-
Value Object 가 최고다.ETC 2023. 6. 14. 18:51
사람의 나이를 나타날때 어느 자료형을 사용해야할까? 1. Interger 2. Boolean 3. String 정답은 셋다 아니다. 나이를 나타내는 타입 Age 를 만들어서 사용해야한다. value object 코드의 유지보수와 가독성을 향상시키며 모델의 표현력을 높일수있는 value object 는 도메인에서 한개 또는 그 이상의 속성을 묶어 특정한 값을 나타내는 객체를 의미한다. value object 의 특징 및 장점으로 는 불변성, 동등성, 자가 유효성, 휴먼 에러 방지 가 있다 불변성 한번 생성되면 그 값을 변경하지 못하게하여 중간에 변경되지 않는 안정성 과 다중 스레드 환경에서 안전하게 사용이 가능하다. public class Age { private int value; public Age(i..
-
Spring @Bean 과 @ComponentSpring-Boot 2023. 4. 13. 14:26
Spring 에서 IOC Containe 에 의해 관리되는 Spring Bean 을 사용하기위해서는 등록하는 과정이 있어야하는데 Bean 을 등록하는 어노테이션으로는 @Bean 과 @Component 가 있다. 둘다 Bean 을 등록하도록 하는 기능이지만 용도가 다르다. @Bean Bean의 @Target 를 보면 METHOD 로 되어있어 메소드 위에 부착하는 어노테이션이라는것을 알수있다. @Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface Bean {} 외부라이브러리 와 같이 개발자가 직접 제어가 불가능한 Bean 을 생성하려할때 사..
-
Spring Boot 및 DB 모니터링 시스템 구축Spring-Boot 2023. 3. 13. 18:43
Spring Boot Actuator Spring Boot Actuator 는 다양한 엔드포인트를 통해 모니터링을 지원하는 라이브러리. 이를통해 실행 중인 호스트와 애플리케이션의 상태 정보, 메모리 사용량, 요청 횟수, HTTP 엔드포인트 등 다양한 정보를 확인 의존성 추가 //Spring Boot Actuator implementation 'org.springframework.boot:spring-boot-starter-actuator' runtimeOnly 'io.micrometer:micrometer-registry-prometheus' Spring Boot Actuator 는 자체적으로 다양한 엔드포인트를 제공하고있다 예로 /actuator/health 에 접근하면 헬스체크 엔드포인트로 {stat..
-
GitHub Actions 사용하여 CI/CD 적용해보기ETC 2023. 2. 18. 00:51
용어Github Action 의 개념 용어로는 Workflow, Event, Job, Step, Action, Runner 가 있다.WorkflowGithub Action 의 최상위 개념Repository의 .github/workflows 폴더 아래에 저장하나 이상의 Job으로 구성되고, Push나 PR과 같은 Event에 또는 특정 시간대에 실행 될 수 있는 자동화된 프로세스EventWorkflow를 Trigger(실행)하는 특정 활동이나 규칙특정 활동이란 Push, Pull Request, Commit 특정시간(Cron) 등을 의미특정 행동이 아닌,webhook (Repository Dispatch Webhook)을 사용하면 Github 외부에서 발생한 이벤트에 의해서도 Workflow를 실행 가능R..
-
JPA Column의 null 제약 조건JPA 2023. 2. 7. 15:48
JPA 에서 DDL 생성시 제약 조건을 매핑하는 과정에서 해당 필드에 null이 들어올수없도록 제약을 걸고 싶을때 @Column(name = "name", nullable = false) private String name; 위와같이 nullable 를 false 로 주어 null 이 들어올수없는 제약을 걸어둘수있다. create table tb_library ( id varchar(255) not null, **name varchar(255) not null,** primary key (id) ) engine=InnoDB; 실제 테이블 생성 쿼리를 보면 name 컬럼에 not null 조건이 붙은 상태로 생성하는것을 볼수있다. 이렇게되면 name 필드에 null 이 들어간 엔티티는 DB 에 들어갈수는있..
-
Clean Architecture for AndroidAndroid 2023. 1. 14. 13:56
아키텍쳐의 필요성 태초 기존의 서버에서 사용하던 MVC 패턴을 Android,IOS 에 적용하며 개발. 초기에는 큰 문제가없었으나 점점 클라이언트의 몸집이 키지며 관심사 분리에 안되기에 발생하는 문제를 직면 아키텍쳐 도입의 장점 일관적인 코드 작성으로 유지보수와 협업에 도움이된다. 생산성 향상 테스트의 용이성 개발의 방향성을 잡을수있다. 종류 MVC : model + view + controller 서버든 클라이언트든 일반적으로 접할수있는 아키텍쳐 하지만 비지니스 로직과 뷰의 관점 분리가 안되기때문에 안드로이드는 MVP, MVVM을 적용 MVP : model + view(view controller) + Presenter 이곳에서의 뷰는 뷰콜백을 받아 구성하는 구조 모델과 뷰를 함께 관리하긴하지만 중간 ..