본문 바로가기
반응형

직장이 아닌 직업을 가지자!713

Docker 리서치 도커 등장 배경 docker 관련 문서 : https://github.com/remotty/documents.docker.co.kr 서버를 관리한다는 것 복잡하고 어려운 서버관리 시간이 흐르면서 서버환경이 종종 바뀌거나 오픈소스가 바뀌거나 하는 걸 볼수 있습니다. CentOS -> Ubuntu Chef -> Ansible -> 또 다른 오픈소스 DevOps의 등장으로 짧은 개발주기와 잦은 배포 마이크로서비스 아키텍처의 유행 -> 프로그램은 더 잘게 쪼개어져 관리는 더욱 복잡해짐. 새로운 툴은 계속 나오고 클라우드의 발전으로 설치해야 할 서버가 수백, 수천대에 이르는 상황(?) 이런 노답인 상황에서 Docker가 등장하고 서버관리 방식이 완전히 바뀌게 됩니다. 도커의 역사 도커는 2013년 3월 산타클라라.. 2021. 2. 3.
마이크로서비스 아키텍처(Microservice Architecture) 마이크로 서비스 아키텍처 큰 문제를 상대적으로 작게 분해해 해결 이렇게 작게 나눈 각 서비스가 독립적으로 역할을 수행 한가지만, 아주 잘 처리하자. 라는 것이 마이크로 서비스 아키텍처의 기본 철학이다. 단일 책임 원칙(SRP)를 중시(Single Responsibility Principle) 비즈니스 태스크를 작은 태스크로 나누며, 각 태스크마다 마이크로 서비스를 정의 한다. 비즈니스 요구사항과 태스크를 얼마나 잘 나눴는지에 따라 시스템에 두개 혹은 100개의 마이크로 서비스가 존재 마이크로 서비스 아키텍처 특징 시스템을 둘 이상의 실행 단위 또는 컴포넌트로 구성한다. 각 컴포넌트는 기능을 서비스 형태로 표출, 결합도가 낮으며 비즈니스 목적에 맞게 동작한다. 각 컴포넌트는 메시징 큐, HTTP 요청/응답.. 2021. 2. 3.
SpringBoot 구조 - Monolith / Micro k8s 도입 전 클라우드 네이티브 개발에 대해서 알게 되었다. cloud native development? 왜 클라우드 네이티브 개발인가? 클라우드의 이점을 완전하게 활용하려면 애플리케이션에 대한 새로운 접근 방식이 필요하며, 컨테이너를 사용한 패키징, 현대화된 아키텍처 수용, 애자일 기술 활용이 이에 해당 합니다. 클라우드 네이티브 방식은 개발 가속화, 제공 가속화, 변화하는 요구에 대한 적응을 가속화할 수 있는 최적의 방법입니다. 클라우드 네이티브 개발은 바로 DevOps입니다. 이는 컨테이너, 마이크로서비스, 그리고 하이브리드 클라우드입니다. 애플리케이션 서비스를 더욱 신속하게 구축하기 위해 중요한 사항을 수용하도록 관점을 바꾸는 것이 매우 중요합니다. 우선적으로 마이크로서비스에 대해서 알아보도록.. 2021. 1. 4.
AtomicInteger&LongAdder&Thread-Safe 자바에서 Thread-Safe 즉, 데이터에 대해 동시 접근을 제어하기 위해 Lock( 2020/11/24 - [Language/Java] - Java thread에서의 Lock의 종류?) 을 사용한다. 그런데 이 데이터가 그냥 값을 읽거나 업데이트 정도의 기능일 경우에는 Lock보다는 원자성(Atomic) 변수가 더 성능도 좋고 효율적이다. 아래는 Thread-Safe 이야기 하다가 나옴 ㅋㅋ 오늘 포스팅은 AtomicInteger와 LongAdder에 대해 알아보고자 한다. LongAdder의 경우 실제 서비스에서 사용하고 있다. 위의 사진에서 보면 여러가지 정보가 있는데 하나씩 살펴보면..! int a = 0; thread-1 thread-2 a+=1 a+=1 의 경우 CPU에 의해 처리가 되는데 .. 2020. 12. 1.
Java thread에서의 Lock의 종류? 자바에서 2개의 Lock이 있는데 첫번째는 자바에서 thread간 동기화를 위해 synchronized 키워드를 사용하는것을 사용 합니다. 이런 synchronized 키워드를 사용하는 lock을 Intrinsic Lock 또는 Built-in Lock이라고 한다. // Mutual Exclusion public synchroized void intrinsicLockfunc(){ ... } // Wait synchronized(this){ ... this.wait(); ... } // signal synchronized(this){ ... this.notify(); ... } 두번째는 Java 1.5에서 java.util.concurrent.locks 패키지를 통해 제공되는 Explicit Lock이 있.. 2020. 11. 24.
Jackson Annotation Examples @JsonInclude 어노테이션 속성을 제외 하는데 사용. ex) JSONObject _connects가 null인 경우에 제외! @JsonInclude(JsonInclude.Include.NON_NULL) private JSONObject _connects; @JsonIgnoreProperties 클래스 레벨의 어노테이션이고 무시할 속성을 표시 @JsonIgnoreProperties({ "id" }) public class BeanWithIgnore { public int id; public String name; } id는 무시되는걸 알수 있다. @Test public void whenSerializingUsingJsonIgnoreProperties_thenCorrect() throws JsonPr.. 2020. 11. 17.
@Retryable 특정 Exception이 발생하면 일정 횟수만큼 재시도 할 수 있는 어노테이션이다. @EnableRetry 작성.(configuration 등) 재시도 하고 싶은 메소드에 @Retryable 작성. include : 특정 Exception이 발생할 때 retry exclude : 설정 된 Exception 재시도 제외 maxAttempts : 최대 재시도 횟수(default 3회) backoff : 재시도 pause 시간 ex) FailedStoreException 발생 시 최대 5번 시도! delay 10 @Retryable(value = { FailedStoreException.class }, maxAttempts = 5, backoff = @Backoff(delay = 10)) 참고 // // So.. 2020. 11. 17.
k8s 자격증? 온라인 시험이.. 300달러..!!! 개 비싸다 ㅋㅋ 열공하고 회사에서 지원해주면 도전해 볼 만할듯! ㅋㅋ www.cncf.io/certification/cka/ Certified Kubernetes Administrator (CKA) | Cloud Native Computing Foundation The Certified Kubernetes Administrator (CKA) program was created by the Cloud Native Computing Foundation (CNCF), in collaboration with The Linux Foundation, to help develop the Kubernetes ecosystem. www.cncf.io 2020. 11. 12.
@PreDestory란? 이 메소드는 소멸 메소드이며 이전 @PostConstruct와 상반된 개념이다. JSR-250 스펙에 따라 구현 되었다. (걍 자바에서 사용하려면 또는 springframework 2.5미만 버전에서는 javax.annotation 패키지 관련 라이브러리가 필요 함.) Springframework 2.5부터는 사용 가능! 현재 프로젝트에서는 @PostConstruct와 @PreDestory만 사용하고 있다. 하지만 찾아보니 여러가지 방법이 존재했다. 아래의 멋진 사이트를 참고하면 된다. 정리 및 공유 감사용! madplay.github.io/post/spring-bean-lifecycle-methods 그 중 흥미로운 테스트가 있었는데 바로 생성자/소멸자 호출 순서 테스트이다. import javax.a.. 2020. 11. 12.
@PostConstruct란? @PostConstruct? javax.annotation Annotation Type PostConstruct @Documented @Retention(value=RUNTIME) @Target(value=METHOD) public @interface PostConstruct The PostConstruct annotation is used on a method that needs to be executed after dependency injection is done to perform any initialization. This method MUST be invoked before the class is put into service. This annotation MUST be supported on.. 2020. 11. 10.
k8s 스터디 흔적 kubectl 롤링 업데이트 해보기! img만들고 docker build -t idock.xxx.io/teri_epi/kubia:v1 docker build -t idock.xxx.io/teri_epi/kubia:v2 docker hub에 push docker push idock.xxx.io/teri_epi/kubia:v1 docker push idock.xxx.io/teri_epi/kubia:v2 k : kubectl / rolling update! k rolling-update kubia-v1 kubia-v2 --image=idock.daumkakao.io/teri_epi/kubia:v2 kubectl 롤링 업데이트는 더이상 사용되지 않는다. Why? -> 더 나은 업데이트 방법이 존재! kubect.. 2020. 10. 22.
springboot 2.x 이상 springbatch table문제 해결 방법! id 'org.springframework.boot' version '2.3.2.RELEASE'를 사용 중! 그리고 springbatch개발을 하고 있다! 그런데? 스프링배치를 수행하면서 아래의 오류 발생~~! bad SQL grammar [SELECT JOB_INSTANCE_ID, JOB_NAME from BATCH_JOB_INSTANCE where JOB_NAME = ? and JOB_KEY = ?]; nested exception is java.sql.SQLSyntaxErrorException: Table 'BATCH_JOB_INSTANCE' doesn't exist 스프링배치는 수행관련 내용들을 메타데이터로 남겨서 테이블에 저장하는데 해당 테이블 스키마를 생성하지 않아서 문제가 되었다. https.. 2020. 8. 13.
springbatch setting시 오류: Spring Boot plugin requires Gradle 5 (5.6.x only) or Gradle 6 (6.3 or later). The current version is Gradle 4.10.3 https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#appendix-dependency-versions Spring Boot Reference Documentation This section goes into more detail about how you should use Spring Boot. It covers topics such as build systems, auto-configuration, and how to run your applications. We also cover some Spring Boot best practices. Although there is nothing particularly spe docs.s.. 2020. 8. 6.
2020.07.16 스터디 6장 볼륨 : 컨테이너에 디스크 스토리지 연결 볼륨은 pod와 라이프사이클이 같다. 즉, pod가 생성 될 때 볼륨이 생성, 삭제될 때 볼륨이 삭제. pod 스펙에 정의 된다. pod의 모든 컨테이너에서 볼륨을 사용할 수 있다.(단, 볼륨에 액세스해야하는 각 컨테이너에 볼륨을 마운트 해야 한다.) 여러가지 종류가 존재 emptyDir: 일시적인 데이터를 저장하는 비어있는 단순 디렉토리. hostPath : 워커 노드(물리장비)의 파일 시스템에서 pod로 디렉토리를 마운트 하는데 사용. gitRepo : git스토리지의 내용을 체크아웃해 초기화된 볼륨. nfs : pod에 마운트 된 NFS 공유.(Network File System) gcePersistentDisk(구글 컴퓨트 엔진 영구 디스크) cind.. 2020. 7. 16.
초 간단 Apache Storm 맛보기(코딩) 이번 포스팅에서는 maven, springframework, java를 사용한다. 이전 시간에 apache storm 클러스터를 셋팅 해보았다. 그에 맞는 storm버전을 maven pom.xml에 작성해보자. maven관련 내용은 메이븐레파지토리에서 알수 있다. https://mvnrepository.com/artifact/org.apache.storm/storm-core/1.0.1 그리고 로깅과 스프링프레임워크 관련도 셋팅 해보자. 4.0.0 storm game 1.0-SNAPSHOT 3.2.13.RELEASE 1.0.1 4.5.2 1.7.10 1.1.2 org.springframework spring-context ${spring.version} org.springframework spring-be.. 2020. 5. 25.
초 간단 Apache Storm 맛보기(셋팅) Apache Storm을 셋팅하기 위해서 필요한 것은? 1. Open Jdk 2. Zookeeper 3. Apache Storm 4. Python Jdk와 Python은 서버에 맞게 잘 찾아서 셋팅 해준다. :) 이 포스팅에서는 pass~ 이제! 이 포스팅에서 다룰 주키퍼와 아파치 스톰! 셋팅을 시작해보자~ Zookeeper Setting download : wget http://mirror.apache-kr.org/zookeeper/zookeeper-3.5.8/apache-zookeeper-3.5.8-bin.tar.gz 압축해제 : tar xvfz apache-zookeeper-3.5.8-bin.tar.gz 심볼릭 링크 센스 : ln -s apache-zookeeper-3.5.8-bin zookeepe.. 2020. 5. 19.
repository does not exist or may require 'docker login' k8s 상황은 이러하다. 1. Dockerfile로 이미지를 만들었다. Dockerfile + docker build 명령어 -> 이미지 뿅~ docker build -t xxxx:v0.1 . 2. docker images로 만들어진 이미지를 확인. 3. docker tag로 tag변경 가능. 4. docker push로 docker hub에 push!! docker push xxxx:v0.1 k8sdev.yaml apiVersion: apps/v1 kind: Deployment metadata: name: tomcat-deployment labels: app: tomcat spec: replicas: 1 selector: matchLabels: app: tomcat template: metadata: labe.. 2020. 2. 20.
docker hub login시 error 발생! docker login시에 error가 발생 하였다. Error saving credentials: error storing credentials - err: exit status 1, out: `error storing credentials - err: exit status 1, out: `The user name or passphrase you entered is not correct. ~/.docker/config.json { "auths" : { }, "credSstore" : "osxkeychain", "credsStore" : "desktop", "stackOrchestrator" : "swarm" } 다른 사람들과 config.json의 내용 또한 달랐다. 해결 방법 first rm /usr.. 2020. 1. 29.
const definitions are not supported by current javascript version VueJs 셋팅 시 IntelliJ에서 나오는 오류! 해결 방법은 아래와 같이 자바스크립트 버전을 변경하여 주면 된다! 끝~ 2019. 6. 12.
sourceTree 새로 설치 한 후 password를 지속적으로 묻는 경우 github > SSH and GPG keys를 설정해줬는데도 자꾸 패스워드를 물었다... cmd창에서 git config --global credential.helper osxkeychain 이 명령어를 통해 해결 하였다. 굳! 2019. 6. 4.
[acet-#2] Vue.js 무작정 해보기(용어 등 훝어보기!) # 바로 코딩을 해보고 싶으신 분은 jsfiddle로 쉽게 해볼수 있습니다. https://jsfiddle.net/chrisvfritz/50wL7mdz/ # Vue.js의 특징으로 단일 파일 컴포넌트를 들수 있다. Componet System : Vue의 또 다른 중요한 개념. # 호환성 Vue는 ECMAScript5 기능을 사용 -> IE8 이하 버전을 지원하지 않습니다. 하지만 모든 ECMAScript5 호환 브라우저를 지원합니다. # Vue Devtools * https://github.com/vuejs/vue-devtools#vue-devtools vuejs/vue-devtools ⚙️ Browser devtools extension for debugging Vue.js applications. .. 2019. 6. 4.
반응형