본문 바로가기

전체 글769

서비스 Observability의 구축, 개념부터 설계까지 오늘날의 데이터 센터 운영에서는 Observability 가 필수적인 요소로 자리 잡고 있는데요, 이는 시스템의 상태를 모니터링하고 분석하여 문제를 빠르게 해결할 수 있도록 돕는 개념입니다. Observability는 단순한 모니터링을 넘어, 시스템의 복잡한 내부 상태를 가시화하여 운영 효율성을 높이는 데 중요한 역할을 하고 있는데요, 이번 포스팅 에서는 Observability의 개념에 대해 설명드리고 이를 어떻게 활용 가능한지에 대해 알려드리겠습니다.  Observability의 개념Observability는 시스템의 내부 상태를 외부에서 추론할 수 있도록 하는 능력을 의미하며, 이를 위해 로그, 메트릭, 트레이스 같은 데이터를 활용합니다. 이러한 데이터를 통해 시스템의 작동 방식을 이해하고, 잠재적.. 2024. 8. 15.
strace 를 이용한 프로세스 모니터링 - 디버깅 빠르게 하는 방법 안녕하세요오늘은 strace를 이용한 프로세스 모니터링 방법에 대해 알려드리겠습니다. 근래 코딩 국비 지원 프로그램들 쿼리큘럼을 훑어보고 있는데, 이런 사소한 명령어에 대한 도구 사용법은 잘 다뤄지지 않는 듯하여 포스팅을 남겨봅니다. 저도 아직 제대로 다 본 것은 아니지만 프로그래밍 국비 지원 과정은 대부분 시스템 보다는 웹/앱 개발에 치중된 경향이 있어 보입니다. 무튼, 오늘 주제는 strace도구 사용법 입니다.  저는 네이버 엑스퍼트에서 합리적인 가격으로 C++/ Python 관련한 코드문제를 해결해 드리고 있습니다. 관심이 있으시다면 상담요청을 진행 해 주세요.  요청하시는 일정 내 해결이 가능한 문제라면 최선을 다해 도움을 드리겠습니다. https://m.expert.naver.com/mobil.. 2024. 6. 6.
[Testing/QA] 카오스 엔지니어링의 개념과 예시 - System 회복력의 검증 최근 이런저런 기술용어들을 찾아보다가 접하게 된 "카오스 엔지니어링"  몽키테스트와 연관된 용어로, 마구잡이로 테스트하는 방식 정도로만 인지를 하고 있었고 정확한 정의를 알고 있지는 못한 것 같아서 공부삼아 포스팅을 작성했다. 아래 내용에서는 카오스 엔지니어링이란 무엇인지, 어떤 특징이 있는지, 그리고 실제로 어떻게 활용되는지를 중점적으로 알아보았다.  카오스엔지니어링 정의 : 시스템의 회복력(resilience)을 테스트하고 개선하기 위해 의도적으로 시스템에 문제를 일으키는 실험을 수행하는 기술적 접근 방식 카오스 엔지니어링은 시스템이 예상치 못한 장애 상황에서도 어떻게 반응하고, 어떻게 회복하는지를 파악하는데 그 목적을 둔다.   카오스 엔지니어링의 주요 목적 - 시스템의 결함을 미리 발견하여 개선 .. 2024. 5. 25.
Python과 Go: 미래의 프로그래밍 언어는 어떤 것이 더 유망할까? 프로그래밍 언어를 선택하는 것은 개발자에게 중요한 결정입니다. 어느정도 개발 경험이 있는 경우에 어떤 언어를 더 깊이 공부해 볼지에 대한 고민이 많아지는데요, 오늘날 가장 인기 있는 두 언어인 Python과 Go에 대해 알아보겠습니다. Python과 Go의 개요 Python은 1991년에 출시된 범용 프로그래밍 언어로, 데이터 과학, 기계 학습, 일반적인 프로토타이핑 등에 널리 사용됩니다. Python은 간단하고 읽기 쉬운 구문으로 알려져 있으며, 동적 타이핑을 지원하므로 명시적인 타입 선언이 필요하지 않습니다. 또한, Python은 클래스, 상속, 다형성을 지원하는 객체 지향 기능을 가지고 있습니다. 반면에 Go는 2009년에 Google에서 출시한 상대적으로 새로운 언어로, 클라우드 기반 웹 애플리케.. 2024. 4. 21.
[C++/STL] How to find the size, length of a vector In C++, there are several ways to calculate the size of a vector, which indicates how many items it contains. Although there isn’t a single definitive method, you can choose from the following summarized approaches. Keep in mind that there isn’t necessarily a right or wrong answer; consider these as reference points. 1. std::vector::size: This directly returns the size of the vector. For example.. 2024. 4. 21.
C++ extern 개념, 사용방법 정리 C++ 개발을 하다보면 클래스별로, 기능별로 여러 파일을 만들어야 하는 경우가 있습니다. 다른 파일의 전역변수를 사용하는게 잘 되지 않아서 전역변수를 포기하고 별도의 객체를 만들어야 할지 고민하기도 하는데요. 이럴 때 도움이 되는 키워드 extern 에 대해 알아보겠습니다. 개요 개발을 하면서 두개의 소스코드 : a.cpp, main.cpp 를 만들었다고 가정해 봅시다. a.cpp은 전역변수를 선언하고 있고, main.cpp는 이를 사용하는 코드입니다. a.cpp int test=123 main.cpp #include using namespace std; int main () { cout 2024. 4. 21.
리눅스 프로세스 사용량 분석, htop 응용하기 이전 글에 이어서 작성하는 리눅스 프로세스 사용량 분석 응용 하기 방법입니다. 아래 글도 한번 읽어주시면 감사하겠습니다. 리눅스 프로세스 좀 더 잘 들여다보기 - htop 사용법 리눅스 프로세스 좀 더 잘 들여다보기 - htop 사용법 최근 운영 중인 서비스가 프로세스를 많이 사용하게 되면서, ps 나 top 보다 조금 더 나은 도구가 필요하다는 생각이 들었습니다. 그래서 찾아보니 htop 이라는 툴이 있어서 일단 VM에서 어느정도 armin.tistory.com htop 기능의 활용 htop 을 실행하기 전 옵션을 활용하여 원하는 동작을 수행할 수도 있지만, htop 실행 후에도 옵션에서 제공했던 기능들을 활용 가능합니다. 위에 보이는 htop 실행화면을 보면 F1 ~ F10 까지의 메뉴가 있으며, 아.. 2024. 4. 19.
리눅스 프로세스 좀 더 잘 들여다보기 - htop 사용법 최근 운영 중인 서비스가 프로세스를 많이 사용하게 되면서, ps 나 top 보다 조금 더 나은 도구가 필요하다는 생각이 들었습니다. 그래서 찾아보니 htop 이라는 툴이 있어서 일단 VM에서 어느정도 기능을 제공하는지 확인해 보았습니다. 설치 htop 설치는 apt, snap 또는 소스코드 빌드 등 여러 방법으로 가능하다. 각자 OS에 맞는 패키지 관리 도구를 이용하도록 하자. 저는 apt 로 설치를 진행했습니다. 명령어, 옵션 새로운 명령어를 설치하면 help 또는 man page를 확인해 보곤 합니다. 몇 가지 옵션들이 뜨는데요, 하나씩 천천히 확인해 보겠습니다. 1. htop 그냥 htop명령을 입력했을 때 입니다. 각종 프로세스 정보들과 개별 코어가 얼만큼의 리소스를 사용하고 있는지를 보여줍니다... 2024. 4. 13.
AWS Amplify 로 AWS 웹앱 구현하는 방법 AWS Amplify AWS Amplify는 프런트엔드 웹 및 모바일 개발자들이 클라우드 기반 애플리케이션을 쉽게 구축, 연결 및 호스팅 할 수 있도록 도와주는 JavaScript 라이브러리입니다. AWS 는 Amplify 를 통해 클라우드 내에서 앱을 빌드하는데 필요한 모든 기능들을 제공합니다. AWS Amplify를 사용하면 다음과 같은 기능을 수행할 수 있습니다. 프런트엔드 및 백엔드 연결: Amplify를 사용하여 프런트엔드 애플리케이션과 백엔드 서비스를 연결할 수 있습니다. 데이터베이스, 인증, 스토리지 등과 같은 백엔드 기능을 쉽게 추가할 수 있습니다. 호스팅 및 배포: Amplify를 사용하여 프런트엔드 웹 앱을 빠르고 안전하게 배포하고 호스팅 할 수 있습니다. CI/CD 워크플로를 통해 프.. 2024. 3. 23.
[C++] nullptr과 NULL차이 - nullptr 조건문 사용시 주의사항 NULL NULL은 C에서 주로 많이 사용하게 되는 값 입니다. 보통 0으로 정의되어 있습니다. 초기화 또는 문자열 끝을 표현하기 위해, 할당 된 값이 없음을 의미하고 싶을 때 보통 사용하게 됩니다. In C, the macro NULL may have the type void*, but that is not allowed in C++ because null pointer constants cannot have that type. C 에서는 NULL은 void* 타입을 갖게된다. 하지만 C++에서는 다르며, 이는 null pointer 상수가 void* 타입을 가질 수 없기 떄문이다. C에서의 NULL type은 void* 입니다. 하지만 C++은 조금 다른데요, C++ 11 이전에는 NULL 매크로를 .. 2024. 3. 19.
C와 C++이 백악관에서 더 이상 사용하지 않게 된 이유 C와 C++을 그만 사용해야 하는 이유 최근 ciokorea.com 에서 발행한 뉴스기사 중 재밌는 글을 보았다. 제목은 백악관, 'C'와 'C++' 사용 중단 촉구··· 전문가들 "시의적절한 권고" 였는데, 사실 예전부터 계속 나오던 얘기이기는 하다. 기사가 궁금한 분들은 아래 링크를 확인해 보자 백악관, 'C'와 'C++' 사용 중단 촉구··· 전문가들 "시의적절한 권고" 바이든 행정부가 버퍼 오버플로 및 기타 메모리 액세스 취약성을 유발하는 프로그래밍 언어에서 벗어날 것을 촉구했다. Image Cr www.ciokorea.com C, C++ 이 보안적으로 문제가 있고 이러쿵저러쿵.. 우리는 메모리를 관리하는 언어를 사용해야 하며 go 나 rust가 그런 것이다! 이런 주장이 대부분이었다. 사실 틀린.. 2024. 3. 17.
MSA에서 서비스 간 효과적인 통신을 책임지는 Service mesh 개념 읽어보기 Service mesh 최근 신규 서비스 설계를 하면서 Service mesh와 Istio에 대한 내용들을 보게 되었습니다. 직접 사용해 보거나 공부를 해본 적은 없고 간접적으로 이런 게 있다 정도로만 알고 있었는데요, 말 나온 김에 가볍게라도 리서치를 해봐야겠다 싶어서 포스팅을 작성합니다. In software architecture, a service mesh is a dedicated infrastructure layer for facilitating service-to-service communications between services or microservices using a proxy. - 출처 : 위키피디아 위키피디아에서는 Service mesh는 proxy를 사용하여 마이크로 서비스,.. 2024. 3. 16.
Standard stream의 유형 stdout, stderr 차이점과 활용 사진: Unsplash의Ilya Pavlov 표준 스트림 유형 표준스트림 유형은 3가지 I/O 연결 유형이 있습니다. 1. standard input ( stdin ) Standard input은 프로그램이 데이터를 입력 받는 스트림입니다. 파일을 읽거나, CLI에서 입력을 받는 경우에 standard input을 사용하게 됩니다. 2. standard output ( stdout ) Standard output 은 프로그램이 출력 데이터를 쓰기 위한 스트림 입니다. 모든 프로그램이 stdout 스트림을 사용하지는 않습니다만, 터미널에 출력을 쓰는 경우 stdout 스트림을 사용한다고 볼 수 있겠습니다. stdout 의 파일 디스크립터는 1 을 사용하고 있습니다. 파일디스크립터 1에 내용을 쓰는 경우 s.. 2024. 3. 5.
리눅스 개발하면서 C++ 디버깅 방법 - gdb breakpoint(중단점) 활용 윈도에서 visual studio를 이용하거나 이클립스로 개발을 했을 때 디버깅에 대한 고민은 크게 하지 않았던 것 같습니다. IDE가 강력한 기능을 제공하고 있고, 편의성이 상당했기 때문입니다. 하지만 리눅스에서 개발을 하는 경우라면 어떨까요? DISPLAY를 잡고 IDE를 통해 개발한다면 윈도우와 큰 차이는 없을지도 모르겠습니다. 아니면 IDE에 ssh 설정을 해서 개발을 하는것도 방법이겠죠. GDB 저는 리눅스에서 vim을 이용하여 개발을 하고 있습니다. 디버깅은 gdb를 주로 사용하고요. 너무 old fashion 인가 싶지만.. 다양한 업계가 있고 제한적인 개발환경이 있으니 너무 뭐라 하지 않으셨으면 좋겠습니다. 여하튼 다른 개발 도구를 쓰더라도 디버깅 만큼은 gdb를 사용하게 될 것 같습니다... 2024. 3. 4.
개발자용 노트북 추천 - 개발자가 맥북을 선호하는 이유 개발자들은 노트북을 정말 많이들 사용합니다. 일부 개발자들은 집에서만 개발을 하는데도 불구하고 노트북만 사용하는 경우도 많이 있는데요, 왜 개발자들은 노트북을 더 선호할까요? 개발자들이 노트북을 선호하는 이유는 여러 가지가 있습니다. 제가 알려드리는 내용은 그중 일부이고 정말 다양한 이유가 있으니 참고만 해주세요. 개발자가 노트북을 선호하는 이유 휴대성과 이동성: 노트북은 휴대성이 뛰어나며 어디서나 쉽게 이동할 수 있습니다. 이는 개발자가 자신의 작업을 어디서든 수행할 수 있게 해 주며, 필요한 경우 현장에서 작업하는 데 유용합니다. 언제 어디서나 운영대응이 필요한 개발자들에게는 휴대성이 큰 장점으로 작용합니다. 휴가 중에도 연락이 오는 경우가 종종 있어서 노트북이 정말.. 필요합니다 ^^; 다양한 운영.. 2024. 3. 3.