Takip et

Ubuntu 18.04 Sunucularda MySQL ile Galera Kümesi Yapılandırması

Ubuntu 18.04 Sunucularda MySQL ile Galera Kümesi Yapılandırması Galera Kümesi, MySQL, MariaDB veya Percona Server for MySQL için senkron, çokl

Ubuntu 18.04 Sunucularda MySQL ile Galera Kümesi Yapılandırması

Galera Kümesi, MySQL, MariaDB veya Percona Server for MySQL için senkron, çoklu ana (multi-master) bir replikasyon çözümüdür. Yüksek erişilebilirlik, sıfır veri kaybı ve ölçeklenebilirlik sunarak kritik iş yükleri için ideal bir veritabanı altyapısı sağlar. Geleneksel MySQL replikasyon yöntemlerinin aksine, Galera Kümesi, tüm düğümlerin her zaman tutarlı bir durumda olmasını garanti eder. Bu makalede, Ubuntu 18.04 işletim sistemine sahip sunucular üzerinde Percona XtraDB Cluster kullanarak bir Galera kümesinin nasıl kurulacağını ve yapılandırılacağını adım adım inceleyeceğiz.

Yüksek Erişilebilirlik ve Ölçeklenebilirlik İhtiyacı

Modern uygulamalar, kesintisiz hizmet ve sürekli artan veri hacmi ile başa çıkmak zorundadır. Tek bir veritabanı sunucusu, hem performans darboğazları hem de tek hata noktası (Single Point of Failure – SPoF) riski taşır. Birincil veritabanı sunucusunun çökmesi durumunda, tüm uygulama hizmet dışı kalabilir. Bu tür senaryoları önlemek için yüksek erişilebilirlik (High Availability – HA) ve ölçeklenebilirlik çözümlerine ihtiyaç duyulur.

Geleneksel MySQL replikasyonu (ana-bağımlı), birincil sunucuya yazma işlemlerini yaparken, bağımlı sunucular sadece okuma işlemleri için kullanılabilir veya birincil sunucu çöktüğünde manuel/otomatik bir failover (devir) mekanizması ile birincil rolünü üstlenir. Ancak bu yöntemde, bağımlı sunucular genellikle asenkron çalıştığından veri kaybı riski bulunur ve failover süreci bir miktar kesinti yaratabilir.

Galera Kümesi, bu sorunlara çözüm sunar. Senkron replikasyon sayesinde tüm düğümler aynı anda güncel veriye sahip olur ve çoklu ana yapısı sayesinde herhangi bir düğüme yazma işlemi yapılabilir. Bu, hem yazma yükünü dağıtma potansiyeli sunar hem de bir düğümün çökmesi durumunda diğer düğümlerin hizmeti kesintisiz bir şekilde sürdürmesini sağlar.

Galera Cluster’ın Temel Özellikleri

Galera Kümesi’ni tercih etmenizi sağlayacak birkaç temel özellik bulunmaktadır:

Senkron Replikasyon

Galera, “virtually synchronous” (neredeyse senkron) replikasyon kullanır. Bu, bir işlem (transaction) bir düğümde commit edildiğinde, tüm diğer düğümlerin bu işlemi onaylamasını bekler. Bu sayede, kümedeki tüm düğümlerin veri tutarlılığı sağlanır ve veri kaybı riski ortadan kalkar. Geleneksel asenkron replikasyonun aksine, birincil düğümün çökmesi durumunda commit edilmiş hiçbir veri kaybolmaz.

Çoklu Ana (Multi-Master) Yapı

Galera Kümesi’ndeki tüm düğümler aynı anda aktif olabilir ve hem okuma hem de yazma işlemleri için kullanılabilir. Bu, uygulamanızın yazma yükünü birden fazla düğüme dağıtabileceği anlamına gelir, bu da performansı artırır ve tek bir düğümün darboğaz oluşturmasını engeller. Ancak, uygulama seviyesinde dikkatli olmak ve aynı anda aynı satırda çakışan yazma işlemlerini yönetmek önemlidir.

Otomatik Üye Yönetimi

Bir düğüm kümeye katıldığında veya kümeden ayrıldığında (çökme dahil), Galera Kümesi bunu otomatik olarak algılar ve küme üyeliğini günceller. Yeni bir düğüm kümeye katıldığında, mevcut düğümlerden birinden durum transferi (State Transfer – SST) yaparak otomatik olarak senkronize olur. Bu, operasyonel yükü önemli ölçüde azaltır.

Çatışma Çözümü (Conflict Resolution)

Çoklu ana yapısında, aynı anda birden fazla düğüme yapılan yazma işlemleri arasında çakışmalar meydana gelebilir. Galera, sertifikasyon tabanlı replikasyon kullanarak bu çakışmaları algılar. Bir işlem commit edildiğinde, diğer düğümlerdeki eşzamanlı işlemlerle çakışma olup olmadığı kontrol edilir. Çakışma durumunda, ilk commit eden işlem kazanır ve diğer çakışan işlemler geri alınır (rollback). Bu durum, uygulamanızın çakışmaları minimuma indirecek şekilde tasarlanmasını gerektirir.

Veri Tutarlılığı

Senkron replikasyon sayesinde, kümedeki tüm düğümler her zaman aynı veri kümesine sahiptir. Bu, okuma işlemlerinin hangi düğümden yapılırsa yapılsın her zaman en güncel veriyi döndüreceği anlamına gelir. Bu güçlü tutarlılık garantisi, özellikle finans ve e-ticaret gibi sektörlerde kritik öneme sahiptir.

Ön Koşullar ve Sistem Gereksinimleri

Galera kümesi kurmadan önce aşağıdaki ön koşulların ve sistem gereksinimlerinin karşılandığından emin olmalısınız:

Ubuntu 18.04 Sunucuları

Bu kurulum için en az üç adet Ubuntu 18.04 sunucusu önerilir. Galera, tek bir düğümle de çalışabilir ancak yüksek erişilebilirlik ve bölünmüş beyin (split-brain) senaryolarını önlemek için tek sayıda (3, 5, 7 vb.) düğüm kullanmak en iyi uygulamadır. Her sunucuya statik bir IP adresi atanmış olmalıdır.

* Node 1: 192.168.1.101
* Node 2: 192.168.1.102
* Node 3: 192.168.1.103

Root veya sudo yetkisine sahip kullanıcı

Kurulum ve yapılandırma adımları için sudo yetkisine sahip bir kullanıcı veya root kullanıcısı gereklidir.

Ağ Yapılandırması

Tüm düğümlerin birbirleriyle ağ üzerinden iletişim kurabildiğinden emin olun. Sunucular arasındaki gecikmenin düşük olması, küme performansını doğrudan etkiler.

Bellek ve Depolama

Galera Kümesi düğümleri, MySQL sunucuları gibi bellek ve depolama açısından iyi kaynaklara ihtiyaç duyar. İşlem yüküne ve veri boyutuna bağlı olarak yeterli RAM ve hızlı disk (SSD önerilir) tahsis edilmelidir.

Güvenlik Duvarı Ayarları

Galera Kümesi düğümlerinin birbirleriyle iletişim kurabilmesi için belirli portların açık olması gerekir. Ubuntu’da UFW (Uncomplicated Firewall) kullanıyorsanız, aşağıdaki portları açmanız gerekecektir:

* 3306/tcp: MySQL istemci bağlantıları için.
* 4567/tcp: Galera Cluster replikasyon trafiği için (unicast).
* 4568/tcp: Durum Aktarımı (State Transfer – SST) için (rsync/xtrabackup).
* 4444/tcp: Durum Aktarımı (State Transfer – SST) için (rsync/xtrabackup).
* 4567/udp: Galera Cluster replikasyon trafiği için (multicast).

Her düğümde aşağıdaki komutlarla bu portları açın:

sudo ufw allow 3306/tcp
sudo ufw allow 4567/tcp
sudo ufw allow 4567/udp
sudo ufw allow 4568/tcp
sudo ufw allow 4444/tcp
sudo ufw enable

Kurulum Adımları

Şimdi Galera kümesini kurmaya başlayabiliriz. Tüm adımlar her üç düğümde de uygulanacaktır, aksi belirtilmedikçe.

Adım 1: Sunucuları Güncelleme

Her sunucuda sistem paket listesini güncelleyin ve yüklü paketleri en son sürümlerine yükseltin:

sudo apt update
sudo apt upgrade -y

Adım 2: Galera Depolarını Ekleme

Percona XtraDB Cluster’ı kurmak için Percona’nın resmi depolarını eklememiz gerekiyor. Bu, en güncel ve kararlı sürümleri almamızı sağlar.

İlk olarak, Percona deposunu eklemek için gerekli araçları yükleyin:

sudo apt install software-properties-common dirmngr wget -y

Ardından, Percona Release paketini indirip kurun. Bu paket, Percona depolarını sisteminize ekleyecektir:

wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb
sudo dpkg -i percona-release_latest.generic_all.deb

Şimdi, Percona XtraDB Cluster 5.7 sürümünü etkinleştirin. Ubuntu 18.04 ile uyumlu olduğu için 5.7 sürümünü kullanacağız:

sudo percona-release setup pxc57

Depo değişikliklerini yansıtmak için paket listesini tekrar güncelleyin:

sudo apt update

Adım 3: Percona XtraDB Cluster Bileşenlerini Kurma

Depolar eklendikten sonra, Percona XtraDB Cluster sunucu ve istemci bileşenlerini kurabiliriz. Ayrıca, Durum Aktarımı (SST) yöntemi olarak kullanacağımız percona-xtrabackup-24 paketini de yüklememiz gerekmektedir.

sudo apt install percona-xtradb-cluster-server-5.7 percona-xtradb-cluster-client-5.7 percona-xtrabackup-24 -y

Kurulum sırasında MySQL root kullanıcısı için bir parola belirlemeniz istenebilir. Güçlü bir parola belirlediğinizden emin olun.

MySQL servisinin otomatik olarak başlamasını önlemek için durdurun ve devre dışı bırakın, çünkü özel bir yapılandırma ile başlatacağız:

sudo systemctl stop mysql
sudo systemctl disable mysql

Adım 4: MySQL Yapılandırmasını Düzenleme

Her düğümde Galera kümesi için MySQL yapılandırma dosyasını düzenlememiz gerekiyor. Yeni bir yapılandırma dosyası oluşturmak en iyi yöntemdir, böylece varsayılan ayarlar korunur.

sudo nano /etc/mysql/conf.d/galera.cnf

Aşağıdaki yapılandırmayı bu dosyaya ekleyin. Her düğüm için wsrep_node_name ve wsrep_node_address parametrelerini kendi IP adresleri ve isimleriyle güncellemeyi unutmayın.

[mysqld]

Genel Ayarlar

bind-address = 0.0.0.0 datadir = /var/lib/mysql socket = /var/run/mysqld/mysqld.sock pid-file = /var/run/mysqld/mysqld.pid log_error = /var/log/mysql/error.log default_storage_engine = InnoDB innodb_autoinc_lock_mode = 2 query_cache_size = 0 query_cache_type = 0 binlog_format = ROW

Galera Ayarları

wsrep_on = ON wsrep_provider = /usr/lib/galera3/libgalera_smm.so

Küme Bilgileri

wsrep_cluster_name = "my_galera_cluster" wsrep_cluster_address = "gcomm://192.168.1.101,192.168.1.102,192.168.1.103"

Düğüm Bilgileri (Her düğüm için özel)

Node 1 için:

wsrep_node_name = "galera-node1" wsrep_node_address = "192.168.1.101"

Node 2 için:

wsrep_node_name = "galera-node2"

wsrep_node_address = "192.168.1.102"

Node 3 için:

wsrep_node_name = "galera-node3"

wsrep_node_address = "192.168.1.103"

Durum Aktarımı (SST) Ayarları

wsrep_sst_method = xtrabackup-v2 wsrep_sst_auth = "sstuser:SST_PASSWORD" # Güçlü bir parola ile değiştirin!

Önemli Notlar:
* wsrep_cluster_address: Kümedeki tüm düğümlerin IP adreslerini virgülle ayırarak listeleyin. Bu, düğümlerin birbirini bulmasını sağlar.
* wsrep_node_name ve wsrep_node_address: Her düğümde sadece o düğüme ait olan satırların yorumunu kaldırın ve kendi IP adresini yazın.
* wsrep_sst_auth: sstuser için güçlü bir parola belirleyin ve SST_PASSWORD yerine kullanın. Bu kullanıcıyı daha sonra oluşturacağız.

Yapılandırma dosyasını kaydedin ve çıkın (CTRL+O, Enter, CTRL+X).

Adım 5: İlk Düğümü Başlatma (Bootstrap)

Galera kümesini başlatmak için ilk düğümü özel bir komutla “bootstrap” etmemiz gerekir. Bu düğüm kümenin ilk üyesi olacak ve diğer düğümler ona bağlanacaktır.

Sadece ilk düğümde (örneğin 192.168.1.101) bu komutu çalıştırın:

sudo galera_new_cluster

Servisin başladığından emin olmak için durumunu kontrol edin:

sudo systemctl status mysql

Şimdi MySQL istemcisi ile bağlanarak küme boyutunu kontrol edin:

mysql -u root -p

Parolanızı girdikten sonra aşağıdaki komutu çalıştırın:

SHOW STATUS LIKE 'wsrep_cluster_size';

Çıktı wsrep_cluster_size: 1 şeklinde olmalıdır, bu da kümede şu an sadece bir düğüm olduğunu gösterir.

Adım 6: Diğer Düğümleri Kümeye Katma

İlk düğüm başarıyla başlatıldıktan sonra, diğer düğümleri kümeye katabiliriz.

Diğer düğümlerde (örneğin 192.168.1.102 ve 192.168.1.103) aşağıdaki adımları uygulayın:

1. Yukarıdaki Adım 4‘teki galera.cnf dosyasını kendi düğüm bilgilerinizle doğru şekilde yapılandırdığınızdan emin olun.
2. MySQL servisini başlatın:

sudo systemctl start mysql

Bu düğümler, wsrep_cluster_address parametresinde belirtilen diğer düğümleri otomatik olarak bulacak ve onlardan durum transferi (SST) yaparak kümeye katılacaktır. Bu işlem, veri boyutuna bağlı olarak biraz zaman alabilir.

Her düğümde MySQL istemcisi ile bağlanarak küme durumunu kontrol edin:

mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size';"

Tüm düğümler kümeye katıldıktan sonra, tüm düğümlerde wsrep_cluster_size: 3 çıktısını görmelisiniz. Ayrıca, wsrep_local_state_comment: Synced çıktısını da görmeniz gerekir, bu da düğümün senkronize olduğunu gösterir.

Adım 7: SST Kullanıcısı Oluşturma

xtrabackup-v2 yöntemini kullanarak durum transferi (SST) yapabilmek için MySQL’de özel bir kullanıcıya ihtiyacımız var. Bu kullanıcıyı herhangi bir düğümde oluşturabiliriz, çünkü Galera replikasyonu sayesinde otomatik olarak diğer düğümlere de yansıyacaktır.

Herhangi bir düğümde:

mysql -u root -p

Parolanızı girdikten sonra aşağıdaki komutları çalıştırın ( SST_PASSWORD yerine galera.cnf dosyasında belirlediğiniz parolayı kullanın):

CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'SST_PASSWORD';
GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT, PROCESS ON . TO 'sstuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Bu kullanıcıyı oluşturduktan sonra, kümedeki tüm düğümleri yeniden başlatmanız gerekecektir. Yeniden başlatma işlemini sırayla yapın (bir düğümü durdurun, başlatın, diğerine geçin).

sudo systemctl restart mysql

Adım 8: MySQL Root Parolasını Ayarlama

Kurulum sırasında zaten bir root parolası belirlemiş olabilirsiniz. Eğer belirlemediyseniz veya değiştirmek isterseniz, mysql_secure_installation aracını kullanabilirsiniz. Bu araç, root parolasını ayarlamanın yanı sıra, anonim kullanıcıları kaldırma, uzaktan root girişini devre dışı bırakma ve test veritabanını silme gibi ek güvenlik önlemleri almanıza yardımcı olur.

Herhangi bir düğümde:

sudo mysql_secure_installation

Komut istemlerini takip ederek gerekli güvenlik ayarlarını yapın.

Galera Cluster Yönetimi ve İzleme

Galera kümenizi kurduktan sonra, durumunu izlemek ve yönetmek önemlidir.

Küme Durumunu Kontrol Etme

MySQL istemcisi üzerinden SHOW STATUS LIKE 'wsrep%'; komutu ile kümenin durumunu detaylı olarak inceleyebilirsiniz:

mysql -u root -p -e "SHOW STATUS LIKE 'wsrep%';"

Önemli çıktılar:
* wsrep_cluster_size: Kümedeki aktif düğüm sayısı.
* wsrep_local_state_comment: Düğümün durumu (Synced, Donor/Desync, Joined, etc.). Synced olması gerekir.
* wsrep_incoming_addresses: Kümedeki diğer düğümlerin IP adresleri.
* wsrep_local_recv_queue_avg: İşlemlerin yerel kuyruktaki ortalama boyutu. Yüksek değerler, düğümün replikasyonu yakalamakta zorlandığını gösterebilir.
* wsrep_flow_control_paused: Akış kontrolünün ne kadar süreyle duraklatıldığını gösterir. Yüksek değerler, kümede bir darboğaz olduğunu işaret edebilir.

Düğüm Çıkarma ve Ekleme

Bir düğümü kümeden güvenli bir şekilde çıkarmak için MySQL servisini durdurmanız yeterlidir. Küme, kalan düğümlerle çalışmaya devam edecektir. Bir düğümü tekrar eklemek için sadece MySQL servisini başlatmanız yeterlidir; düğüm otomatik olarak SST yaparak kümeye katılacaktır.

Yük Dengeleme (Load Balancing)

Galera Kümesi, çoklu ana yapısı sayesinde birden fazla düğüme yazma ve okuma işlemleri yapılmasına olanak tanır. Ancak, uygulamaların bu düğümler arasında yükü dengelemesi için bir yük dengeleyiciye ihtiyaç duyulur. Yaygın kullanılan yük dengeleyiciler şunlardır:

* HAProxy: TCP seviyesinde yük dengeleme yaparak istemci bağlantılarını Galera düğümleri arasında dağıtabilir. Sağlık kontrolleri ile yalnızca sağlıklı düğümlere yönlendirme yapar.
* ProxySQL: MySQL protokolünü anlayan ve sorgu seviyesinde yük dengeleme ve yönlendirme yapabilen gelişmiş bir proxy’dir. Okuma/yazma ayırma, sorgu yeniden yazma ve önbellekleme gibi özellikler sunar.

Bu araçların yapılandırması bu makalenin kapsamının dışındadır, ancak yüksek erişilebilir ve performanslı bir Galera kümesi için kritik öneme sahiptirler.

Sıkça Karşılaşılan Sorunlar ve Çözümleri

Galera kümesi yönetirken karşılaşabileceğiniz bazı yaygın sorunlar ve potansiyel çözümleri şunlardır:

Split-Brain Senaryosu

Ağ bölündüğünde (network partition), küme birden fazla alt kümeye ayrılabilir ve her biri kendini ana küme sanabilir. Bu duruma “split-brain” denir ve veri tutarsızlığına yol açabilir. Galera, wsrep_provider_options içinde pc.strict_mode=ON ve pc.quorum_rules gibi parametrelerle bu durumu yönetmeye çalışır. En iyi uygulama, tek sayıda düğüm kullanmak ve ağ bağlantılarını yedekli hale getirmektir. Bir split-brain durumunda, kümenin çoğunluğuna sahip olan alt küme aktif kalır, diğerleri hizmeti durdurur.

Düğüm Senkronizasyon Sorunları (SST/IST Başarısızlıkları)

Yeni bir düğüm kümeye katılırken veya uzun süre çevrimdışı kalmış bir düğüm geri dönerken, durum transferi (SST – State Snapshot Transfer veya IST – Incremental State Transfer) başarısız olabilir.
* SST Başarısızlığı: Genellikle wsrep_sst_auth kullanıcısının yetkileri, parolası veya xtrabackup araçlarının eksikliği/uyumsuzluğu nedeniyle oluşur. mysql hata günlüklerini kontrol edin.
* IST Başarısızlığı: Düğümün çok uzun süre çevrimdışı kalması ve diğer düğümlerin tuttuğu işlem geçmişini (gcache) kaybetmesi durumunda oluşur. Bu durumda düğüm tam bir SST yapmak zorunda kalır.

Ağ Gecikmesi

Galera senkron replikasyon kullandığı için, düğümler arasındaki yüksek ağ gecikmesi işlem commit sürelerini uzatabilir ve küme performansını düşürebilir. Düğümlerin coğrafi olarak birbirine yakın olmasını sağlamak ve düşük gecikmeli ağ altyapısı kullanmak önemlidir.

Yazma Çakışmaları (Deadlock)

Çoklu ana yapısında aynı anda aynı satırda yapılan yazma işlemleri çakışmalara (deadlock) neden olabilir. Galera, bu çakışmaları sertifikasyon mekanizmasıyla çözer ve çakışan işlemlerden birini geri alır. Uygulamanızın bu durumları uygun şekilde ele alması ve yeniden deneme mekanizmaları içermesi önemlidir. Çakışmaları en aza indirmek için uygulamanızın yazma yükünü belirli düğümlere yönlendirmeyi düşünebilirsiniz.

Güvenlik Konuları

Galera kümenizin güvenliğini sağlamak, verilerinizin korunması için hayati öneme sahiptir.

Ağ Güvenliği

* Güvenlik Duvarı: Sadece gerekli portları (3306, 4567, 4568, 4444) güvenilir IP adreslerinden gelen bağlantılara açın.
* VPN/Özel Ağ: Mümkünse Galera düğümleri arasındaki iletişimi özel bir ağ veya VPN tüneli üzerinden yapın.
* SSL/TLS: MySQL istemci bağlantıları ve Galera replikasyon trafiği için SSL/TLS şifrelemesi kullanın. Bu, wsrep_provider_options içinde socket.ssl_key, socket.ssl_cert ve socket.ssl_ca gibi parametrelerle yapılandırılabilir.

Veritabanı Kullanıcı Yetkileri

* Minimum yetki prensibini uygulayın. Uygulama kullanıcılarına sadece ihtiyaç duydukları veritabanı ve tablo yetkilerini verin.
* root kullanıcısının uzaktan erişimini devre dışı bırakın veya çok kısıtlı bir IP adresinden erişimine izin verin.
* sstuser gibi özel kullanıcılar için sadece gerekli yetkileri verin.

Şifreleme

* Veri Şifrelemesi: Hassas verileri depolamadan önce uygulama katmanında şifreleyin.
* Diskte Şifreleme (Encryption at Rest): Veritabanı dosyalarının depolandığı diskleri şifrelemeyi düşünebilirsiniz. Percona XtraDB Cluster, InnoDB tablespace şifrelemesini destekler.

Sonuç

Bu makalede, Ubuntu 18.04 sunucular üzerinde MySQL ile güçlü bir Galera Kümesi’nin nasıl yapılandırılacağını adım adım öğrendik. Galera Kümesi, yüksek erişilebilirlik, veri tutarlılığı ve çoklu ana replikasyon yetenekleri sayesinde modern uygulamaların gerektirdiği ölçeklenebilirlik ve kesintisiz hizmet ihtiyaçlarını karşılamak için mükemmel bir çözümdür.

Kurulum sürecinde, Percona depolarını ekledik, gerekli paketleri kurduk, her düğüm için özel yapılandırmaları yaptık ve kümeyi başlattık. Ayrıca, küme yönetimi, izleme, yaygın sorunlar ve güvenlik konuları hakkında da bilgi verdik.

Galera Kümesi’nin tam potansiyelini kullanmak için, uygulamanızın çoklu ana yapısına uygun olarak tasarlanması ve potansiyel yazma çakışmalarını ele alması önemlidir. Yük dengeleyiciler (HAProxy, ProxySQL) kullanarak kümenizin performansını ve erişilebilirliğini daha da artırabilirsiniz. Başarılı bir Galera Kümesi, sağlam bir altyapı ve dikkatli yönetim ile işletmenizin kritik veritabanı ihtiyaçlarını güvenilir bir şekilde karşılayacaktır.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Exit mobile version