본문 바로가기
반응형

전체 글81

[자료구조] Heap (힙) - 정의, 예제, 시간복잡도, 장단점 # 자료구조 시리즈 1. Array (배열) 2. Linked List (연결 리스트) 3. Stack 4. Queue 5. Tree (Binary / Segment) 6. Graph 7. Deque 8. Heap 9. Trie 자료구조(Data Structure)에서는 자료에 효율적으로 접근하고 수정할 수 있도록, 데이터를 구성하고 저장하는 방법을 공부합니다. 자료구조는 데이터의 형태에 따라 크게 선형과 비선형으로 구분됩니다. 선형 자료구조는 데이터가 일렬로 나열되어 있는 반면, 비선형 자료구조는 데이터가 특정한 형태를 띄고 있다는 것이 핵심입니다. 전자의 예시로는 Array, Linked List, Stack, Queue 등이 있으며 후자에는 Tree, Graph 등이 있습니다. Heap (힙) 1... 2023. 1. 9.
[자료구조] Linked List (연결 리스트) - 정의, 예제, 시간복잡도, 장단점 # 자료 구조 시리즈 1. Array (배열) 2. Linked List (연결 리스트) 3. Stack 4. Queue 5. Tree (Binary / Segment) 6. Graph 7. Deque 8. Heap & Priority Queue 9. Trie 자료구조(Data Structure)에서는 자료에 효율적으로 접근하고 수정할 수 있도록, 데이터를 구성하고 저장하는 방법을 공부합니다. 자료구조는 데이터의 형태에 따라 크게 선형과 비선형으로 구분됩니다. 선형 자료구조는 데이터가 일렬로 나열되어 있는 반면, 비선형 자료구조는 데이터가 특정한 형태를 띄고 있다는 것이 핵심입니다. 전자의 예시로는 Array, Linked List, Stack, Queue 등이 있으며 후자에는 Tree, Graph 등이.. 2023. 1. 8.
[Firebase] Flutter에서 Firebase Cloud Messaging 구현 (iOS, Android, Push Notification, 파이어베이스 푸시알림메시지) 참고자료 - https://firebase.flutter.dev/docs/messaging/overview/ - https://firebase.google.com/docs/cloud-messaging - https://mookypoo.medium.com/flutter-fcm-푸쉬-알림-7e0699729462 - https://kanoos-stu.tistory.com/72 - https://eunjin3786.tistory.com/280 - https://arcanine33.github.io/flutter/Flutter-FCM/ - https://sudarlife.tistory.com/entry/Flutter-플러터-삽질은-그만-Firebase-Messaging-iOS-셋업 Flutter에서 Firebas.. 2023. 1. 5.
[자료구조] Array(배열) - 정의, 예제, 시간복잡도, 장단점 # 자료 구조 시리즈 1. Array (배열) 2. Linked List (연결 리스트) 3. Stack 4. Queue 5. Tree (Binary / Segment) 6. Graph 7. Deque 8. Heap & Priority Queue 9. Trie 자료구조(Data Structure)에서는 자료에 효율적으로 접근하고 수정할 수 있도록, 데이터를 구성하고 저장하는 방법을 공부합니다. 자료구조는 데이터의 형태에 따라 크게 선형과 비선형으로 구분됩니다. 선형 자료구조는 데이터가 일렬로 나열되어 있는 반면, 비선형 자료구조는 데이터가 특정한 형태를 띄고 있다는 것이 핵심입니다. 전자의 예시로는 Array, Linked List, Stack, Queue 등이 있으며 후자에는 Tree, Graph 등이.. 2023. 1. 4.
[Istio] Batch Job에서 불가능한 Side-car 패턴(Envoy proxy)의 한계를 극복해보자 (Kubernetes, Pod, Container, CronJob) 참고 자료 - https://stackoverflow.com/questions/72645650/terminate-istio-proxy-after-cronjob-completion - https://github.com/wafflestudio/waffle-world/blob/main/apps/snutt-dev/snutt-core/snutt-core.yaml - https://www.howtogeek.com/devops/how-to-clean-up-old-kubernetes-jobs/ - https://kubernetes.io/docs/concepts/workloads/controllers/job/#clean-up-finished-jobs-automatically 1. 문제 정의 apiVersion: batc.. 2022. 12. 26.
[Kubernetes] NetworkPolicy를 통해 Pod끼리의 트래픽을 통제해보자. (Ingress/Egress, from/to, namespaceSelector, podSelector, port) [ NetworkPolicy ] 1. Ingress vs Egress 네트워크 트래픽은 외부로부터 유입되는 Ingress(inbound)와 내부로부터 외부로 나가는 Egress(outbound)로 구분됩니다. 우리가 공부하고 있는 쿠버네티스는 기본적으로 non-isolated 네트워크이므로 클러스터 내부 Pod끼리의 트래픽 흐름은 자유롭습니다. 하지만 Namespace(네임스페이스)로 단일 클러스터의 리소스 격리 매커니즘을 사용하여 논리적인 가상 클러스터를 만드는 것처럼, 일부 환경에서는 다른 네임스페이스의 애플리케이션을 적절히 격리하거나 트래픽 제어를 할 필요가 있습니다. Ingress라는 이름의 API 오브젝트도 있으나, HTTP/HTTPS로 요청하는 주소를 구분하여 애플리케이션 서비스에 라우팅할 수.. 2022. 12. 14.
[Kubernetes] Authentication/Authentication(인증/인가) 프로세스 및 User/Role 생성(User, CSR, RBAC, RoleBinding) 1. 쿠버네티스에서의 User 개념 쿠버네티스에서는 User(human)와 ServiceAccount(machine) 두 종류의 사용자가 존재합니다. User에는 클러스터 관리자 및 사용자(일반 개발자)가 있으며, ServiceAccount는 Prometheus, Jenkins 등의 Pod 단위로 동작하는 컨테이너들이 API를 사용하기 위해 권한을 부여받은 machine을 뜻합니다. 쿠버네티스에는 우리가 일반적으로 이해하고 있는 User Account과 매칭되는 개념의 객체가 존재하지 않습니다. 즉, 일반적인 방식인 API Call을 통해서는 클러스터에 '지금 사용자가입하니깐 DB 같은데 등록해놔라~'라고 등록할 수 없다는 말입니다. 대신, 클러스터의 인증 기관(CA)이 서명한 유효한 인증서를 제시하는 .. 2022. 12. 13.
[Kubernetes] Volume: Pod의 Container 데이터는 어떻게 저장될까? (Volume, PersistentVolume, PersistentVolumeClaim) 1. Volume Kubernetes(쿠버네티스) 환경에서 Container(컨테이너)는 Pod(파드)에 감싸져서 동작합니다. 이때 Container에서 만들어진 데이터는 Docker(도커) 파일 시스템으로서 컨테이너 이미지에서만 제공됩니다. 즉, 컨테이너가 삭제되고 재시작하면 기존에 사용하던 파일 시스템은 새로 만들어진 컨테이너에서는 접근할 수 없습니다. 만약 컨테이너가 지워지더라도 파일 시스템을 유지하고 싶다면 어떻게 하면 좋을까요? 위 상황에 대비하여 Kubernetes에는 Volume(볼륨) 이라는 API Object가 존재합니다. Volume은 Pod와 마찬가지로 라이프 사이클을 갖는 디스크 스토리지로, 하나의 Pod 내부에 컨테이너가 여러 개라 있더라도 Pod(.yaml)에서 정의한 Volum.. 2022. 12. 11.
[Kubernetes] 쿠버네티스 Network 이해하기 (weave net, flannel, calico / coreDNS, kube-dns / kube-proxy) 1. Pod 통신을 위한 CNI 플러그인 설치하기 Kubernetes uses CNI plugins to setup network. The kubelet is responsible for executing plugins as we mention the following parameters in kubelet configuration. - cni-bin-dir: Kubelet probes this directory for plugins on startup - network-plugin: The network plugin to use from cni-bin-dir. It must match the name reported by a plugin probed from the plugin directory. 아래.. 2022. 12. 10.
반응형