github 의 Pull Request 를 이용해서 코드리뷰를 하고 있다. 코드리뷰라고 하면 참 좋은데 하다보면 다양한 어려움도 있기 마련이다. PR이 너무 커서 보기 힘든 경우도 있고, 내가 얼른 리뷰받아서 배포해야하는데 리뷰가 늦어져서 답답한 경우도 있다. 좋은 PR과 코드리뷰를 하려면 무엇을 고려해야할까 고민해보다가 나름의 고민결과를 적어본다. # 작은 PR리뷰를 요청하는 개발자는 본인의 변경이니 코드가 눈에 잘 들어오지만, 타인이 작성한 코드를 봐야하는 리뷰어 입장에서는 큰 PR은 검토하기가 쉽지 않다. 그리고 결과적으로 큰 PR은 리뷰어들이 리뷰를 진행하는데 시간을 오래 걸리게 만든다. 이는 리뷰어 입장에서도 고통이지만 얼른 리뷰를 받아야하는 요청자 입장에서도 답답한 상황이 된다. 때문에 개발하..
# producer property 설명 default key.serializer key 를 직렬화할때 사용할 클래스. org.apache.kafka.common.serialization.Serializer 를 구현해야함 value.serializer value 를 직렬화할때 사용할 클래스. org.apache.kafka.common.serialization.Serializer 를 구현해야함 bootstrap.servers 연결할 kafka cluster 서버 정보 host:port,host:port 형태로 여러개 전달 가능 "" buffer.memory 프로듀서가 전달할 레코드들을 버퍼링할 수 있는 총 메모리. 프로듀서 애플리케이션에게 할당된 메모리보다 작아야함. 단위는 바이트 33554432 comp..
CI(Continuous Integration) 란 말은 예전부터 많이 들어본 분들이 있을것이다. CI 와 함께 대표적인 CI 툴로 jenkins 를 알고있고, 사용하고있는 분들도 많을 것이다. 그러다가 언젠가부터 CI 를 넘어서서 CD 라는 용어가 들리기 시작했다. 어떤자료는 D 를 delivery 를 사용하기도하고, 어떤자료는 deployment 를 사용하기도한다. 대충 비슷해보이기는하는데 delivery 와 deployment 는 무슨 차이가 있을까? 혹은 같은 내용인데 두 가지 용어로 불리는걸까? 그리고 CD(delivery 든 deployment 든지간에) 와 CI 는 어떻게 다를까? 그 차이를 알아보자. CI(Continuous Integration, 지속적인 통합) 코드는 지속적으로 변경되고..
1. 명사를 사용하고, 동사는 사용하지 말라 이해하기 쉽게 모든 리소스에 대해 아래 구조를 사용하라 Resource GET read POST create PUT update DELETE /cars Returns a list of cars Create a new car Bulk update of cars Delete all cars /cars/711 Returns a specific car Method not allowed (405) Updates a specific car Deletes a specific car 동사는 사용하지마라 /getAllCars /createNewCar /deleteAllRedCars 2. GET 메서드와 쿼리 파라미터로 상태를 변경하면 안된다 상태를 변경하려면 GET 메서드 대..
현재 개발하고있는 환경에선 이미 CI가 구축되어있어 특별히 내가 작업할일은 없었는데 이번에 신규 프로젝트를 들어가면서 직접 구성을 해야할 일이 생겼다. 이런저런 자료들이 많긴한데 딱 내가 원하던 한글 블로그는 없어서 작성을 해본다. 시작하기전에 말하면 jenkins가 너무 잘해줘서 딱히 내가 할일이 많지 않아 놀랐다. Jenkins plugins jenkins에서 blue ocean 플러그인을 설치한다. 음.. 개인적으로 나는 jenkins 쓰면서 플러그인이 없어서 몇번 삽질을 한경험이 있어서 jenkins 신규로 띄우고 바로 github, blue ocean, pipeline 플러그인을 왠만한건 다 설치했다. ㅡ.ㅡ; 혹시 이 포스팅을 보면서 자신의 Jenkins와 메뉴가 다르다던가 하면 저 3개 관련..
1. 코드 베이스배포된 애플리케이션은 하나의 코드 베이스만을 가져야한다. 코드는 git 같은 형상관리 도구를 이용해 관리한다. 2. 의존성애플리케이션이 의존하는 시스템 도구나 라이브러리는 명시적으로 드러나야한다. 암묵적인 의존이 존재하여 다른 환경에 배포할때 문제가 되지않도록 해야한다. 3. 설정배포마다 달라지는 설정은 분리하여 관리한다. 보통 local, test, release에 따라 다른시스템에 대한 정보들이 변경되게된다. 이런 설정들은 따로 관리할 수 있도록 한다. 4. 뒷단 서비스애플리케이션의 뒷단에서 실행되는 모든 서비스들은 연결된 리소스로 취급하며, 실행환경에 따라 사용하거나 사용하지않을 수 있어야한다. 5. 빌드, 릴리즈, 실행빌드, 릴리즈, 실행의 각 단계는 엄격하게 분리한다. 6. 프로..
이번 포스팅은 사실 별거 없는데... 몇분 뻘짓을 하고나서 알게돼가지고... 일단 글로 남긴다. 요즘 2017년이 끝나면서 여기저기서 회고록들이 보이고있다. 너무 많은 글들이 올라오고있어서 몇몇개를 보긴했는데 그 중에 github contribution 그래프를 캡쳐한 글들이 많이 있다. 아무래도 일일커밋 등이 유행을 하면서 github contribution 그래프가 1년의 노력들을 간략하게 볼 수 있는 지표적인 역할을 하는것 같다. (github contribution 그래프. 난 열심히 하지 않았나보다...) 그런데 회고록중에 저 컨트리뷰션 그래프를 3d로 올린글들이 많았다. github에 그리 열성적이지않은 내가 보기에도 너무 간지나서 내걸로 함 보려고했는데 나한테는 그런 옵션이 존재하지 않았다...
비슷한것 같고, 알게 모르게 혼용하는 단어이지만 확실히 구분하라고 물어보면 어려워보이는 단어인데 임백준님의 책을 보다가 알기쉽게 설명해주셔서 정리해놓는다. 동시성여러가지일을 한꺼번에 다루는것을 말한다. 병렬적(같이)으로 실행되는것과는 다르다. 내가 프로젝트를 2개 뛴다고해서 2개의 프로젝트를 동시에 개발하는건 아니다. A를 개발할땐 B가 멈출것이고, B를 개발할땐 A가 멈출것이다. 병렬한꺼번에 일을 처리하는 것을 말한다. 내가 그림자 분신술을 써서 A, B 프로젝트를 같이 진행하면 이것은 병렬이다. 100만개의 요소가 들어있는 숫자배열이있다. 이 배열의 모든 요소들에 2를 곱하려한다. 이때 배열을 25개씩 4등분하여 동시에 2를 곱하는것은 병렬적이다. 참고문헌폴리글랏 프로그래밍7가지 동시성 모델
- Total
- Today
- Yesterday
- Git
- EffectiveJava
- code
- backend개발환경
- programming
- java8
- go-core
- JPA
- java
- OOP
- spring cloud
- Jackson
- servlet
- TEST
- http
- 정규표현식
- frontend개발환경
- Spring
- javascript
- JavaScript Core
- DesignPattern
- clean code
- toby
- frontcode
- MySQL
- Design Pattern
- generics
- db
- mariadb
- Kotlin
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |