전체 글
-
OOP, FP 관점의 결합도와 응집도카테고리 없음 2020. 8. 5. 21:52
자바에 익숙한 프로그래머들은 데이터와 기능(메서드)를 의미있게 객체로 묶어내는 것이 응집도를 높이고 각 객체는 그들의 할일을 충실하게 하도록 설계되기 때문에 시스템 간 응집도를 낮추는 방법이라 한다. 그래서 객체를 설계하는 역량이 상당히 중요하다. 어떤 데이터를 가져야 하는지? 그 데이터들로 어떤 기능을 수행하게 해야 하는지? 객체간 의존성을 어떻게 관리 해야 하는지? 반대로 함수형 프로그래밍 세상에선 객체는 없다. (ㅜㅜ) 함수세상에서의 결합도와 응집도는 더 이상 객체 관점에서 설명할 수가 없다. 그래서 데이터는 데이터 따로, 기능(함수)는 기능 따로 분리가 될 수 밖에 없고, 기능(함수)을 잘게 쪼갤 수 있는 데까지 쪼개고 추상화 하는 방식으로 결합도와 응집도를 설명하는 것 같다. 예를 들어 filt..
-
http client로 Open feign 사용하기카테고리 없음 2020. 8. 5. 21:15
스프링에서는 RestTemplate 을 주로 사용하지만 다른 선택지들도 많다. OpenFeign https://github.com/OpenFeign/feign OpenFeign/feign Feign makes writing java http clients easier. Contribute to OpenFeign/feign development by creating an account on GitHub. github.com RestTemplate과 비교하자면 http 요청을 하는 모양새가 좀 더 보기 편해진다. 예를 들어 깃허브 owner와 repository를 파라미터로 넘겨 contributor 목록을 받아오는 api 는 아래 처럼 선언이 가능하다. (예제는 코틀린으로 쓰였습니다) interface G..
-
3. 쿠버네티스 환경 구축하자 - Dockerfile 만들기infra 2020. 8. 1. 17:04
3. Dockerfile 만들기 이전 장에서 이미 만들어진 도커이미지를 다운받아서 실행시켜보았다. 앞으로에 시리즈에서는 실제 이미지를 만들고 직접 도커허브에 이미지를 업로드하고, 컨테이너를 실행하는 실습을 할 것이다. 이장에서는 실제 실행할수있는 웹어플리케이션 서버를 만들어 도커 이미지로 만들것이다. Docker image를 만들기위해서는 Dockfile을 만들어야한다. Dockfile의 역할은 Docker Image를 만들기 위한 설정파일이라고 생각하면된다. 먼저 go 를 이용해서 사용자 요청을 받을 수 있는 echo 웹어플리케이션 서버를 만들것이다. 아래서버는 8080포트를 통해 요청이 들어온경우 Hello Docker!! 고 응답해주는 간단한 웹서버이다. package main import ( "f..
-
2. 쿠버네티스 환경 구축하자 - 간단하게 도커 실행해보기infra 2020. 8. 1. 17:03
2. 간단하게 도커 실행해보기 앞장에서는 도커를 정의해보고 간단한 예제를 실행해봤습니다. 이번장에서는 도커의 기본 조작 방법을 배워보겠습니다. 컨테이너로 애플리케이션 실행하기 컨테이너로 애플리케이션을 실행하기전에 도커 이미지와 도커 컨테이너의 관계를 이해해보자. 도커 이미지란? 도커 컨테이너를 구성하는 파일 시스템과 실행할 애플리케이션 설정을 하나로 합친것으로, 컨테이너들을 생성하는 템플릿역할을 한다. 도커 컨테이너란? 도커 이미지를 기반으로 생성되며, 파일 시스템과 애플리케이션이 구체화돼 실행되는 상태 위와같은 구조로 이미지를 구성하여 이미지를 실행한 프로그램이 컨테이너이다. 그럼 이번에는 HTTP 응듭을 반환하는 간단한 애플리케이션을 실제로 만들어보며 이러한 관계를 정리해볼것이다. 여기에서는 도커의 ..
-
자바 성능 튜닝 이야기 정리 1편java 2020. 7. 31. 13:15
프로파일링 툴 소스 레벨 분석을 위한 툴 (성능 개선) 메모리 사용량을 객체나 클래스, 소스의 라인 단위까지 분석할 수 있음 APM 툴 애플리케이션의 장애 상환에 대한 모니터링 및 문제전 진단이 주 목적 서버의 사용자 수나 리소스에 대한 모니터링 String 관련 클래스 StringBuilder : Thread unsafe StringBuffer : Thread safe // jdk 5 이전 문자열 더하기 public void appendText() { int c = 1; String a = "That is coke"; String b = "I love" + i + "coke"; } // jdk 5 이후에는 컴파일시 아래와 같이 변환된다. public void appendText() { int c = 1..
-
자바스크립트로 안드로이드, IOS 앱 만들기카테고리 없음 2020. 7. 31. 12:55
앱을 만드려면 알아야 할 것들이 정말 많다. (진짜..) 서버가 필요 없는 앱으로 만들고자 한다면 안드로이드, IOS 각각 공부를 해야 한다. 각 운영체제에 맞는 언어, 아키텍쳐 그리고 디자인 컨벤션 등.. 앱이란 올려서 심사를 받아야 하기 때문에 스토어에 올라가기 전까지 챙길게 엄청나게 많다. 그리고 서버가 필요한 서비스라면 공부할 양이 상당히 많아진다.. 반대로 서버개발자 입장에서 서비스를 만들고자 할 때 걸림돌이 있다. 그것은 바로 프론트, 디자인... 아무리 백엔드 시스템을 만들어 놓아도 프론트, 디자인을 할 수 없다면 최종 난관에 부딪혀서 포기하기 일쑤다. 그나마 어드민 툴 등을 만들면서 조금 익숙한 자바스크립트로 클라이언트쪽을 만들 수 있다면 너무나도 좋을 터 백엔드 개발자들을 도와주는 프론트..
-
DDD에 대한 단상-1카테고리 없음 2020. 7. 25. 10:58
책 내용을 인용합니다. 1. 개발자는 단지 코드를 작성하는 직업에 그치지 않으며 소프트웨어를 통해 문제를 해결하는 사람이라고 생각한다. 2. 코딩은 단지 하나의 측면일 뿐이다. 3. 좋은 디자인과 커뮤니케이션 능력은 매우 중요하다. 4. 아마도 소프트웨어 개발이란.. 뭔가를 넣으면 뭔가가 나오는 것이다 라고 생각해볼 때 garbage-in garbage-out 이라는 말을 생각해보자. 명확한 커뮤니케이션과 공유되는 도메인 지식을 통해서 garbage-in 을 최소화 하는 것은 중요하다. 5. DDD는 database-driven 도 object-oriented design 둘 다 아니다. 6. ddd가 모든 영역에서 적절한건 아니지만 비즈니스 소프트웨어를 만들어가는데는 적합하다. 7. 뭘 풀어내기 위해선..