Back-End
-
서브넷(subnet)이란?Back-End/Docker & k8s 2024. 8. 29. 09:36
서브넷(Subnet)은 네트워크를 더 작은 네트워크 단위로 나누는 방법을 의미합니다. 이는 IP 주소를 효율적으로 관리하고, 네트워크 트래픽을 효과적으로 라우팅하기 위해 사용됩니다. 서브넷은 "서브네트워크(Subnetwork)"의 줄임말로, 대규모 네트워크를 여러 작은 네트워크로 구분하여 관리할 때 유용합니다.서브넷의 주요 개념IP 주소:모든 네트워크 장치(컴퓨터, 서버, 라우터 등)는 네트워크에서 고유한 IP 주소를 가져야 합니다. IP 주소는 일반적으로 IPv4 기준으로 32비트 길이의 숫자로, 네 부분(옥텟)으로 나뉘며, 각 부분은 0에서 255 사이의 값을 가집니다.예: 192.168.1.1네트워크와 호스트 부분:IP 주소는 네트워크 부분(network portion)과 호스트 부분(host po..
-
golang: 루프 변수의 스코프 이슈(Fixing For Loops in Go 1.22)Back-End/Golang 2024. 8. 5. 12:46
이 글은 https://go.dev/blog/loopvar-preview 주제를 다룹니다. 문제 설명루프 변수의 스코프 문제Go에서 for 루프는 반복문 내에서 루프 변수를 사용합니다. 하지만 기존의 Go 버전에서는 루프 변수의 스코프가 루프 전체에 걸쳐 있기 때문에, 개발자가 의도하지 않게 루프 변수가 변경되는 상황이 발생할 수 있습니다. 이 문제는 특히 **고루틴(goroutine)**이나 **클로저(closure)**를 사용할 때 더욱 두드러지며, 예측하지 못한 동작을 초래할 수 있습니다.예시 코드 및 문제점2. 고루틴 사용 예시func main() { done := make(chan bool) values := []string{"a", "b", "c"} for _, v := ran..
-
golang: 제네릭(Generic)이란?Back-End/Golang 2024. 8. 3. 13:14
제네릭(Generic)은 Go 언어에서 매우 강력한 도구로, 다양한 데이터 타입을 처리하고 코드를 간결하고 유연하게 만드는 데 유용합니다. 이를 통해 코드의 확장성, 안정성, 재사용성을 높일 수 있으며, 다양한 상황에서 효율적으로 사용할 수 있습니다. 제네릭을 잘 활용하면 더 나은 설계를 하고 변화하는 요구사항에 유연하게 대응할 수 있는 코드를 작성할 수 있습니다. 1. 타입 확장성제네릭을 사용하면 다양한 데이터 타입을 하나의 함수나 구조체로 처리할 수 있습니다. 이는 특정 타입에 제한되지 않고, 여러 타입에 대해 동일한 로직을 사용할 수 있게 합니다.예시: 숫자 계산 함수package mainimport "fmt"// 제네릭 타입 정의type Number interface { ~int | ~float6..
-
하둡(Hadoop) MR(MapReduce)란?Back-End/Hadoop 2024. 7. 25. 13:45
맵리듀스(MapReduce)는 하둡에서 대규모 데이터 세트를 분산 처리하기 위해 사용되는 프로그래밍 모델입니다. 이 모델은 두 가지 주요 단계인 맵(Map)과 리듀스(Reduce)로 구성됩니다. 각각의 단계가 어떻게 작동하는지, 그리고 이를 통해 데이터가 어떻게 처리되는지를 자세히 설명드리겠습니다.맵리듀스(MapReduce) 작업의 개요맵(Map) 단계:입력 데이터를 작은 조각으로 나누고, 각 조각을 병렬로 처리하여 중간 결과를 생성합니다.맵 함수는 입력 데이터를 키-값 쌍으로 변환합니다.셔플(Shuffle) 및 정렬(Sort):맵 단계에서 생성된 중간 결과를 키를 기준으로 정렬하고, 같은 키를 가진 값들을 모읍니다.이 단계는 자동으로 수행되며, 데이터가 리듀서로 전송되기 전에 일어납니다.리듀스(Redu..
-
하둡(Hadoop)으로 데이터 저장 추출해보기Back-End/Hadoop 2024. 7. 25. 13:28
하둡을 사용하여 데이터를 저장하고 추출하는 과정은 여러 단계로 나뉘며, 각 단계는 비교적 직관적입니다. 아래에서는 하둡을 사용하여 데이터를 저장하고 추출하는 과정을 단계별로 쉽게 설명하겠습니다.1. 데이터 저장1.1 데이터 준비먼저 저장할 데이터를 준비합니다. 예를 들어, 로컬 파일 시스템에 저장된 로그 파일이나 CSV 파일 등을 준비합니다.1.2 HDFS에 데이터 업로드하둡 분산 파일 시스템(HDFS)에 데이터를 저장하기 위해, 로컬 파일 시스템에 있는 데이터를 HDFS로 업로드합니다. 이를 위해 hdfs dfs -put 명령어를 사용합니다.# 로컬 파일 system_logs.csv를 HDFS의 /data 디렉토리에 업로드hdfs dfs -put /path/to/local/system_logs.csv ..
-
하둡(Hadoop)이란?Back-End/Hadoop 2024. 7. 25. 12:52
하둡(Hadoop)은 오픈 소스 분산 처리 프레임워크로, 대규모 데이터 세트를 효율적으로 저장하고 처리하기 위해 개발되었습니다. 하둡은 저렴한 하드웨어를 이용하여 대용량 데이터를 분산 처리할 수 있도록 설계되었습니다. 아래에서는 하둡의 기본 개념, 구성 요소, 장점, 그리고 사용 사례를 자세히 소개하겠습니다.하둡의 기본 개념하둡은 대규모 데이터를 처리하기 위해 두 가지 주요 기능을 제공합니다:HDFS (Hadoop Distributed File System): 대규모 데이터를 분산 저장하는 파일 시스템입니다.MapReduce: 분산 데이터 처리 모델입니다.이 두 가지 기능을 결합하여 하둡은 데이터를 저장하고 분석하는데 탁월한 성능을 발휘합니다.하둡의 주요 구성 요소HDFS (Hadoop Distribut..
-
Spring Boot: Java vs KotlinBack-End/Spring 2024. 6. 13. 19:51
Spring Boot에서 Java와 Kotlin 비교: 어떤 언어가 더 나을까요?Spring Boot는 Java 및 Kotlin 두 가지 언어를 모두 지원하는 강력한 프레임워크입니다. 각 언어는 고유한 장점과 단점을 가지고 있으며, 특정 프로젝트의 요구 사항과 개발자의 선호도에 따라 선택이 달라질 수 있습니다. 이 글에서는 Spring Boot에서 Java와 Kotlin을 비교하여, 각 언어의 장점과 단점, 그리고 어떤 상황에서 어떤 언어를 선택하는 것이 좋은지 전문가 관점에서 자세히 살펴보겠습니다.Java 개요Java는 오라클(Oracle)에서 관리하는 범용 프로그래밍 언어로, 플랫폼 독립성과 풍부한 라이브러리, 강력한 커뮤니티 지원을 특징으로 합니다. 1995년에 처음 발표된 이후로 꾸준히 인기를 유..
-
Spring Starter Web vs Spring WebFluxBack-End/Spring 2024. 6. 13. 19:43
1. 서론 (Introduction)Spring Framework 소개Spring Framework는 엔터프라이즈 애플리케이션 개발을 위한 포괄적인 프로그래밍 및 구성 모델을 제공하는 오픈 소스 애플리케이션 프레임워크입니다. 주로 자바 플랫폼을 기반으로 하지만 Kotlin과 Groovy와 같은 언어도 지원합니다. Spring Framework는 다양한 기능을 제공하지만, 그 핵심은 다음과 같습니다:의존성 주입 (Dependency Injection): 애플리케이션의 구성 요소 간의 종속성을 관리하여 코드의 유연성과 재사용성을 높입니다.AOP (Aspect-Oriented Programming): 로깅, 트랜잭션 관리, 보안 등 횡단 관심사를 모듈화하여 코드의 관심사를 분리합니다.데이터 접근 통합: JDB..