개발
-
kubernetes - Configmap개발 2022. 6. 8. 23:25
쿠버네테스 상에서 Configmap 이라는 오브젝트는 어렵게 생각할 필요 없이 클러스터 내에서 Key-Value 쌍의 데이터를 저장하는데 사용하는 API 오브젝트다. 논리적 컴퓨터에 해당하는 Pod은 같은 클러스터 내의 다른 오브젝트의 볼륨에서 환경변수나 구성 파일을 Key-Value로 지정할 수 있는데 이때 사용하는 Object 가 Configmap 이다. kubectl get configmaps 로 클러스터내에 존재하는 configmap 오브젝트를 검색할 수 있다. ➜ ~ kubectl get configmaps NAME DATA AGE aim-configmap 7 6s data: 내부에 있는 값이 configmap에서 key-value 로 저장하는 값이다. 아래 코드에서 enemies, enemie..
-
Kafka 용어 정리개발 2022. 5. 31. 21:18
Topic 카프카 클러스터의 브로커에서 데이터를 관리할 때 기준이 되는 개념. 데이터의 종류를 설정하는 개념이라고 보면 된다. 예를 들어 회원 가입에 대한 이벤트를 중점적으로 처리한다고 이름으로 "join.event" 라는 토픽을 만들어줄 수 있다. Leader Partition, Follower Partition 카프카 클러스터에게 전달한 Topic을 저장하는 데이터 저장소다. Topic은 손실이 되는 것을 막기 위해 하나의 Partition에만 소속되는 것이 아니라 여러개의 Partition에 중복으로 존재한다. 특정 Sector에만 데이터를 두지 않는 RAID 저장 방식과 다른데 차이점이 있다면 Topic의 경우 컨슈머에서 처리를 해야하는 데이터기 때문에 특정 Partition 에서 데이터를 받아와..
-
golang 장단점 분석 (vs JAVA)개발 2022. 3. 10. 14:49
장점 빠르다 Java는 JVM 위에서 돌아가기 때문에 실행하기 위해선 byte코드를 machine코드로 변환하는 과정이 필요하다. 반면 golang은 빌드과정에서 이미 machine코드로 변환했기 때문에 바로 동작할 수 있다. 빌드에 걸리는 시간도 GO 언어 내부적으로 최적화를 많이 해둬서 빠른편이다. 초기 C++에서 실용성을 추가한 버전이기 때문에 속도는 거의 C++과 비슷하다고 봐도 무방할 것 같다. 비동기 작업이 쉽다 GO 언어에는 goroutine이라는 비동기 작업 처리용 경량 쓰레드가 있다. 코틀린에 coroutine과 비슷한 원리인데 둘다 사용해본 입장에선 goroutine이 좀더 간결하고 쓰기 간편했다. Nodejs 가 갖고 있는 비동기처리의 장점을 go 언어 상에도 잘 녹여낸 것 같다. 배..
-
Flutter - Row, Column, Flexible, Expanded개발 2022. 3. 1. 12:45
Flutter UI의 기본 위젯인 Row, Column, Flexible, Expanded에 대해서 알아보자. Row Flutter에서 Row 위젯은 안드로이드로 치면 LinearLayout 이면서 Orientation 이 Horizontal 인 뷰이다. Row 위젯에서 Children의 아이템으로 선언된 위젯은 동일한 Y축에서 순서대로 정렬된다. 아래 코드는 Row 의 children 속성에 두개의 Container 위젯과 하나의 Text 예제를 선언한 결과다. 그 아래 그림처럼 두 개의 Container와 하나의 Text 위젯이 그려지는 것을 확인 할 수 있다. child: Container( color: Colors.white, child: Row( children: [ Container(heigh..
-
Kubernetes Object개발/기술 2022. 2. 22. 21:30
Object Kubernetes 상에서 말하는 Object 는 Kubernetes 시스템 상에서 영속성을 지니고 있는 엔티티(Entity) 말한다. Kubernetes는 이 Entity를 이용해 클러스터의 상태를 나타낸다. Object가 나타내는 것은 컨테이너화돼 동작하는 애플리케이션이 무엇인지 애플리케이션이 사용하는 리소스는 어떤 것이 있는지 애플리케이션과 관련된 정책은 무엇인지 에 대한 것이다. 처음에는 Object라는 개념이 와닿지 않을 수 있는데 Kubernetes 가 하는 역할이 무엇인지 알아가다 보면 당연히 필요한 개념이라고 익히게된다. Object를 생성하면 Kubernetes는 지속적으로 동작하며 오브젝트가 존재하고 명세한 대로 동작하도록한다. 개발자는 오브젝트를 생성/변경/삭제 해서 시스..
-
PostgreSQL VACUUM개발 2022. 2. 17. 20:20
PostgreSQL 에서 delete를 이용해서 삭제를 수행하는 경우 DB 데이터 상에서는 지워지지만 스토리지 상에서는 바로 삭제하진 않는다. 삭제된 자료를 다른 트랜잭션 상에서 사용하고 있다면 그 자료가 지워져선 안되기 때문이다. 그런데 더이상 사용하지 않는 자료가 스토리지 상에 계속 남아 있다면 불필요한 공간을 차지하게 되는 문제가 생긴다. PostgreSQL 에서는 VACUUM 이라는 명령어를 통해 위와 같은 상황을 관리할 수 있는 기능을 제공한다. 영어단어 '청소기를 돌리다'는 의미와 비슷하게 VACUUM 명령어도 데이터베이스 상에 먼지처럼 남겨진 데이터를 정리할 수 있는 기능을 제공한다. VACUUM 명령어는 크게 두가지로 분리할 수 있다. VACUUM 테이블과 인덱스에서 삭제된 자료(old v..
-
Container & Docker개발/기술 2022. 2. 15. 20:00
Container 컨테이너에 설명하기에 앞서 컨테이너 기술이 만들어진 이유를 소개하는게 좋을 것 같다. 우리가 사용하는 컴퓨터에는 여러개의 애플리케이션이 돌아가고 있다. 그리고 대부분의 애플리케이션은 OS에 설치된 라이브러리를 이용해 실행된다. Spring Boot의 경우 JAVA를 참조하고 C 언어로 이뤄진 게임의 경우 GCC 컴파일러를 이용해 실행하게 될 것 이다. 모든 앱이 사용하는 라이브러리가 겹치지 않으면 상관 없다. 그런데 실행하는 앱 별로 필요한 라이브러리 버전이 다른 경우가 종종 있다. 어떤 앱은 Java8에서 실행해야 하는데 새로 배포하는 앱은 Java11 에서 실행되는 환경이 있다면? 일시적으로 링크를 따로 걸어서 해결 할 수 있지만 같은 로컬 환경에 두개의 라이브러리 버전을 관리하는 ..
-
cypher개발/기술 2022. 2. 14. 20:00
cypher는 Graph Database 인 Neo4j 에서 Query를 작성할 때 사용할 수 있는 언어다. 처음 보면 생소하지만 사용하다보면 SQL 과 흡사한 점이 많아 금방 배울 수 있다. 노드와 관계 그리고 속성을 정의하는 쿼리라는 점에 주목해서 보자. 다음 문장을 나타내는 관계를 만든다고 해보자 Mike writes Neo4j Son reads Neo4j Mike likes Son CREATE 문장에서 각 주어와 목적어는 관계상에서 Node로 표현할 수 있으며 각각의 Node는 Label로 묶어 줄 수 있다. Mike와 Son은 User라는 라벨로 표현하고 Neo4j 은 Book 라벨로 표한하자. 각 Node를 Cypher를 이용하면 아래의 쿼리로 세개의 노드를 생성할 수 있다. create(:U..